目的
在JS中使用正则表达式的目的是使用某种规则匹配字符串或子字符串
创建RegExp对象
与创建数组相同,创建RegExp对象有两种方法,一种是字面量,一种是使用构造函数。
使用字面量: var reg = /\d/g; //用两个斜杠包裹匹配规则
使用构造函数: var reg = new RegExp('\\d', 'g'); //第一个参数是匹配规则,同时需要对'\'进行转义。
可以看到,在两种定义方式中,都有一个'g',它是正则表达式的修饰符。RegExp包括的修饰符有:
'g':全文搜索,否则只会匹配到第一个结果为止
'i':忽略大小写,无论大小写都会进行匹配
'm':多行匹配
元字符
含义:在正则表达式中具有特殊含义的非字母字符
包括: . ^ $ * \ { } [ ]
字符类
通常情况下,正则表达式中的一个字符匹配字符串中的一个字符,但是通过'[ ]'可以匹配多个字符。
var reg = /[abc]/g //此表达式会匹配全文中的字母a或者b或者c
'a1b2c3d4'.replace(reg, 'X') //最终结果是'X1X2X3d4'
还可以通过'^'字符匹配非操作:
var reg = /[^abc]/g //此表达式会匹配全文中除了字母a、b、c以外的字符
范围类
很多时候,我们需要匹配字母,数字。使用字符类会显得非常冗杂,例如:[0123456789]
使用字符 '-' 可以表示这种情况:
var reg = /[a-z]/g //匹配全文中的小写字母
var reg = /[a-zA-z]/g //匹配全文中的大小写字母
如果字符 '-' 在两个字符之间,表示范围。如果想匹配 '-',则可以在后面加上字符 '-'
var reg = /[a-z-]/g //匹配全文中的小写字母和字符'-'
预定义类
在js中,定义了一些常用的字符供使用:
. 除了回车符合换行符的任意字符 [^\r\n]
\d 数字字符 == [0-9]
\D 非数字字符 [^0-9]
\s 空白符 [\r\n\t\f]
\S 非空白符 [^\r\n\t\f]
\w 字母数字下划线 [a-zA-Z0-9_]
\W 除了字母数字下划线 [^a-zA-Z0-9_]
还有几个代表边界的字符:
^ 以XXX为开始
$