RegExp对象
正则表达式(regular expression,在代码中常简写为reg)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。
语法
/正则表达式主体/修饰符(可选)
实例:
var reg = /xyz/i
var reg = RegExp('xyz', 'i')
解析:
/xyz/i 是一个正则表达式
xyz 是正则表达式主体
i 是一个修饰符(代表搜索不区分大小写)
正则表达式实例方法
1、RegExp.prototype.test() 正则表达式的test方法返回一个布尔值,表示当前模式是否能匹配参数字符串
var reg = /cat/;
reg.test('cats and dogs'); // 结果为true
// 上面验证的字符串中包含了cat,因此结果返回为true
2、RegExp.prototype.exec() 正则表达式的exec方法,用了返回匹配结果。如果匹配成功就返回一个数组,成员是匹配成功的子字符串,否则返回null。
var s = 'size';
var reg1 = /z/;
var reg2 = /y/;
reg1.exec(s); // ['z'];
reg2.exec(s); // null
// 正则对象reg1匹配成功,返回一个数组,成员是匹配结果;正则对象reg2匹配失败,返回null。
字符串的实例方法
1、String.prototype.match() 字符串实例对象的match方法对字符串进行正则匹配,返回匹配结果;
var s = size;
var reg1 = /z/;
var reg2 = /y/;
s.match(reg1); // ['z']
s.match(reg2); // null
// 字符串的match方法与正则对象的exec方法非常类似:匹配成功返回一个数组,匹配失败返回null。
2、String.prototype.search() 字符串对象的search
方法,返回第一个满足条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1
。
var s = size;
s.search(/z/); // 2
s.search(/y/); // -1
// 第一个匹配结果出现在字符串的2号位置。
元字符和量词
1、点字符(.) 匹配除回车(\r
)、换行(\n
) 、行分隔符(\u2028
)和段分隔符(\u2029
)以外的所有字符
/d.g/
// d.g匹配d和g之间包含任意一个字符的情况, 比如 dog、dig、ding等等
2、位置字符
- ^ 表示字符串的开始位置
- $ 表示字符串的结束位置
/^size/.test('size123') // true
// size必须出现在开始位置
/size$/.test('new size') // true
// size必须出现在结束位置
/^size$/.test('size') // true
/^size$/.test('size test') // false
// 从开始位置到结束位置只能有size
3、选择符(|) 在正则表达式中表示“或关系”(OR),即cat|dog
表示匹配cat
或dog
。
/cat|dog/.test('cats') // true
4、转义符 正则表达式中那些有特殊含义的元字符,如果要匹配它们本身,就需要在它们前面要加上反斜杠。
/1+2/.test('1+2') // false
/1\+2/.test('1+2') // true
// +号需转义
正则表达式速记表
表达式 | 描述 | 元字符 | 描述 | 量词 | 描述 |
---|---|---|---|---|---|
[abc] | a、b或c的单一字符 | . | 任何单一字符 | (...) | 捕捉所有封闭的东西 |
[^abc] | 除a、b或c外的任何单一字符 | \s | 任何空格字符 | (a|b) | a或b |
[a-z] | a-z范围内的任何单个字符 | \S | 任何非空白字符 | a? |
零或一个 |
[a-zA-Z] | a-z或A-Z范围内的任何单个字符 | \d | 任何数字 | a* |
零或多个 |
^ | 开线 | \D | 任何非数字 | a+ | 一个或多个 |
$ | 线路末端 | \w | 任何单词字符(字母、数字、下划线) | a{3} | 准确的说是3个 |
\A | 字符串的开始 | \W | 任何非文字字符 | a{3,} | 3或更多 |
\z | 弦尾 | \b | 任何词界 | a{3,6} | 在3至6之间 |
修饰符: i 大小写不敏感 m 多行匹配 g 执行全局匹配 o 只执行一次 |