JavaScript 正则表达式 整理

一直以来知到正则表达式很强大,想狠下心来学一学,前段时间为此买了本《精通正则表达式》,花了不少大洋。买回来看了不到200页,太浮躁了,看不进去啊,书是好书,就这样一直放着。

看JQuery源码也不少时间了,可对那几个正则表达式不是很理解,就今天,太好了,找了一篇文章,终于有种醍醐灌顶的感觉。好东西不敢独享,呵呵,下面是把那文章稍作整理,稍后再分析JQuery里面的正则表达式,以作复习。

原文地址:http://www.cainiao8.com/web/js_note/js_regular_expression.html

 

1.

c{n}         // /c{1}/只能匹配一个c。

c{n,m}     // c{3,4}的意思是,连续的3个c或者4个c

c{n,}        // c{1,}表示1个以上的c

 

2.

*,+,?

*表示0次或者多次,等同于{0,},即

c* 和 c{0,} 是一个意思。

+表示一次或者多次,等同于{1,},即

c+ 和 c{1,} 是一个意思。

最后,?表示0次或者1次,等同于{0,1},即

c? 和 c{0,1} 是一个意思。

 

3.贪心与非贪心

 

{n,}?, *?, +?, ??, {m,n}?

 

{n,}?  非贪心模式

 

4.^表示只匹配字符串的开头,$则只匹配字符串结尾的字符

 

5.‘.’会匹配字符串中除了换行符\n之外的所有字符

 

6. b|c表示,匹配b或者c

 

7. () 表达式内括号里写的内容会被认为是子正则表达式,所匹配的结果也会被记录下来供后面使用

8. [abc]表示a或者b或者c中的任意一个字符

 

9. 反字符集合[^abc]

10. \b表示的边界的意思,也就是说,只有字符串的开头和结尾才算数,与\b对应\B表示非边界

 

11.  \d表示数字的意思,相反,\D表示非数字。

 

12. 空白

 

\f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符。

\s匹配单个空格,等同于[\f\n\r\t\v]。

 

 

13. \w表示单词字符,等同于字符集合[a-zA-Z0-9_]。

 

14. 反向引用 : 形式如下:/(子正则表达式)\1/

 

15. 不记录子正则表达式的匹配结果 : 使用形如(?:pattern)的正则就可以避免保存括号内的匹配结果

 

16.  所谓正向预查,意思就是:要匹配的字符串,后面必须紧跟着pattern   。 形式:(?=pattern)

17.  形式(?!pattern)和?=恰好相反,要求字符串的后面不能紧跟着某个pattern

 

18.  我们之前用过*,+,?之类的符号,它们在正则表达式中都有一定的特殊含义,类似这些有特殊功能的字符都叫做元字符;要匹配其他元字符,只要在前面加上一个“\”就可以了。

 

19. 正则表达式修饰 : 形式:/pattern/g      

g 全局  

m m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾  

 i 不区分大小写

 

 

20.exect()方法:

 

exec方法返回的其实并不是匹配结果字符串,而是一个对象

 

21. test() 方法:

 

test方法仅仅检查是否能够匹配str,并且返回布尔值以表示是否成功

 

22. macth() 方法:

 

形式:str.match(reg);

与正则表达式的exec方法类似,该方法同样返回一个类似数组的对象,也有input和index属性。

设置了g修饰符的正则表达式在完成一次成功匹配后不会停止,而是继续找到所有可以匹配到的字符。返回的结果包括了三个b。不过没有提供input和index这些信息

 

 

23. replace()方法

 

形式:str. replace (reg,’new str’);

它的作用是将str字符串中匹配reg的部分用’’new str”部分代码,值得注意的是原字符串并不会被修改,而是作为返回值被返回

 

 

就像在正则里我们可以使用\1来引用第一个子正则表达式所匹配的内容一样,我们在replace函数的替换字符里也可以使用$1来引用相同的内容

 

24. search方法和split方法

 

形式如下:str.search(reg);

search返回正则表达式第一次匹配的位置

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(JavaScript,C++,c,正则表达式,C#)