传送门:learn-regex
字符串的正则方法
match()
search()
replace()
split()
正则方法
exec()
test()
常用元字符
- \w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
- \W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
- \d 匹配一个数字字符。等价于 [0-9]。
- \D 匹配一个非数字字符。等价于 [^0-9]。
- \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
- \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
- \b 匹配一个单词边界。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。单词之间是空格
- \B 匹配非单词边界。
- ^ 用来检查要匹配的字符串是否在所匹配字符串的开头
- $ 用来匹配字符串是否是最后一个
- . 除了换行之外的所有字符
需要转义的特殊字符
{ } [ ] / \ + * . $ ^ | ?
字符集 []
[abc] 匹配a,b,c中任意一个字符
[^abc] 匹配不是a,b,c的字符
[0-9] 匹配0~9任意一个数
[a-z]
[A-Z]
[0-9a-z]
量词
n? 匹配0个或者1个n的字符,等价于 {0,1}。
n+ 匹配1次或者多次,等价于 {1,}。
n* 匹配0个或者多个,等价于{0,}。
{n} 匹配确定的 n 次。
{n,} 至少匹配n 次。
{n,m} 最少匹配 n 次且最多匹配 m 次。
贪婪惰性
贪婪:尽可能多的匹配
惰性:尽可能少的匹配
默认是贪婪的
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。
| 贪婪 | 惰性 |
| ? | ?? |
| + | +? |
| * | *? |
| {n} | {n}? |
| {n,} | {n,}? |
| {n,m} | {n,m}? |
捕获,非捕获
/a(b)c/ 捕获b
/a(?:b)c/ 不捕获
用RegExp.$1,RegExp.$2......取出捕获的值
修饰符 i,g,m,u,y
例如匹配一个电话号码
先分析下电话号码的特点:
11位
13、14、15、17、18(好像除了11,12其他都有)开头
var phone = /^1[34578]\d{9}$/ // 带上开始和结束符
var num = '13545454545'
var isPhone = phone.test(num) // true
873

被折叠的 条评论
为什么被折叠?



