正则表达式·JS

http://www.jianshu.com/p/81fdd0a1e7d4

 

创建一个正则表达式
第一种方法:

var reg = /pattern/;

第二种方法:

var reg = new RegExp('pattern');

正则表达式的exec方法简介

exec() 方法用于检索字符串中的正则表达式的匹配。
语法

RegExpObject.exec(string)         //返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
c{n}

{1}表示一个的意思。

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

/c{2}/则会匹配两个连续的c。

以此类推

*,+,?

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

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

+表示一次或者多次,等同于{1,},即
c+ 和 c{1,} 是一个意思。

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

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

贪心与非贪心

人都是贪婪的,正则也是如此。我们在例子reg = /c{3,4}/;str='ccccTest';的例子中已经看到了,能匹配四个的时候,正则绝对不会去匹配三个。上面所介绍的所有的正则都是这样,只要在合法的情况下,它们会尽量多去匹配字符,这就叫做贪心模式。

如果我们希望正则尽量少地匹配字符,那么就可以在表示数字的符号后面加上一个?。组成如下的形式:

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

点’.’

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

二选一,正则表达式中的或,“|“

b|c表示,匹配b或者c。

字符集合[abc]

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

我们在字字符集合中使用如下的表示方式:[a-z],[A-Z],[0-9],分别表示小写字母,大写字母,数字。

反字符集合[^abc]

^在正则表达式开始部分的时候表示开头的意思,例如/^c/表示开头是c;但是在字符集和中,它表示的是类似“非“的意思,例如[^abc]就表示不能是a,b或者c中的任何一个

 由此我们可知:[^0-9]表示非数字,[^a-z]表示非小写字母

边界与非边界

\b表示的边界的意思,也就是说,只有字符串的开头和结尾才算数。例如/\bc/就表示字符串开始的c或者是结尾的c。与\b对应\B表示非边界。

数字与非数字

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

空白

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

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

reg = /\s.+/;
str='This is a test  String.';
reg.exec(str);//“is a test String.”,正则的意思是匹配第一个空格以及其后的所有非换行字符。

同样,\S表示非空格字符。

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

反向引用

形式如下:/(子正则表达式)\1/

正向预查

形式:(?=pattern)

所谓正向预查,意思就是:要匹配的字符串,后面必须紧跟着pattern!

全局匹配,修饰符g

形式:/pattern/g

不区分大小写,修饰符i

形式:/pattern/i

行首行尾,修饰符m

形式:/pattern/m

posted @ 2016-09-30 10:53  chenxj  阅读(252)  评论(0)    收藏  举报