[ 正则 ]正则表达式进阶!

前端之家收集整理的这篇文章主要介绍了[ 正则 ]正则表达式进阶!前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@关于正则表达式,网上百度百度出一大堆。

@H_301_0@这里记录个人最近所悟,之前一直以为,正则表达式,难如上青天,各种符号互相参杂,完全看不懂。

@H_301_0@或许有句话说得对,当你不懂的时候,就该多读书。

@H_301_0@以下算了正则表达式的读书笔记吧:

@H_301_0@

@H_301_0@1 对于 ^ 元字符,一情况下,表示行首锚点。在以下两种情况下则具有特殊意义:

@H_301_0@1) 出现在的字符数组 [ ] 中,切不是第一个靠近[ 的字符,则为普通字符 ^.

@H_301_0@2) 出现在字符数组[] 中,且为靠近左边框 [第一个 字符,则表示逻辑非 。

@H_301_0@2 对于字符数组 [ ],只表示从该字符数组范围中匹配一个字符。

@H_301_0@3 对于连字符号 - (也叫中杠),当出现在字符数组中,若靠近左边框,则为普通字符,否则为连接符,用来连接范围。

@H_301_0@4 对于捕捉匹配与非捕捉匹配.。在jquery的源码中,你可以看到到处的非捕捉匹配。那么原因何在。

@H_301_0@这是因为,非捕捉匹配相对捕捉匹配的效率要高得多。根据常识,也可以推测出来。

@H_301_0@5 那么对于捕捉匹配的用处何在呢? 正则表达式会根据分组情况,对相应的子表达式,进行记录,保存相应的子表达式。

@H_301_0@在javascript中可用 \s1,\s2.... 表示。在使用reg.exec(str) 时,相应的子表达式的值,也会被记录在结果数组中。

@H_301_0@当你需要对一个字符串进行匹配,且对其子表达式的值进行分析时,那么合理的使用捕捉与非捕捉是个不错的选择。

@H_301_0@

@H_301_0@6 关于正则表达式的转义字符是一个难点。

@H_301_0@这里需要注意的是,在绝大多数的程序语言中,表示一个 \ 是必须用双\\ 来表示的,这是也由于字符串的引号问题引起。

@H_301_0@因为如果你用如下的代码进行定义,会直接给出错误

var str = "\";
这样程序会认为是给第二个双引号进行转移。那么你只能采用如下代码
var str = "\\";
@H_301_0@

@H_301_0@那么现在问题来了,当你需要去匹配一个\ 的时候,该如何去做呢?可以有两种方式:

var reg1 = /\\/g;
var reg2Str =  "\\\\";
var reg2 = new RegExp(reg2Str,"g");

以上两种方式皆可以。 为何下面是四个反斜杠,同样也是由于字符串的解析引起。 @H_301_0@7 关于 点( . ) 这个元字符的一些小问题。很多人都认为它是可以有来匹配一切字符的。

@H_301_0@其实不然,这个 . 是不能匹配 换行和回车的。也就是 \n 与\r 。 如果需要匹配一切的字符,

@H_301_0@那么最好采用[\W\w],[\S\s]...之类的形式。

@H_301_0@

@H_301_0@8 关于[\W] 这个匹配字符,其实它也可以用来匹配 下划线。

@H_301_0@

@H_301_0@9 关于 reg.exec() 方法存在的lastIndex 属性的注意点。

@H_301_0@在这里首先要说明,正则表达式的匹配方式是用字符串去匹配正则,而不是用正则匹配字符串([精通正则表达式])。

@H_301_0@注意以下几点:

@H_301_0@1 只有当使用exec方法时,且必须是使用全局匹配时,也就是最后必须带有一个g的属性,才会有lastIndex属性。,

@H_301_0@lastIndex从字面上来讲就是最后一个索引,实际上它的意思是正则表达式开始下一次查找的索引位置,第一次的时候总是为0的,

@H_301_0@第一次查找完了的时候会把lastIndex的值设为匹配到得字符串的最后一个字符的索引位置加1,第二次查找的时候会从lastIndex这个位置开始,后面的以此类推。

@H_301_0@

@H_301_0@关于正则的总结就到此为止。

@H_301_0@很久没有更新博客了,不小心,都快有10w的访问量了,觉得这个东西还是要经常记录,才不至于会忘记。

@H_301_0@谨防忘记,以记录之。

猜你在找的正则表达式相关文章