元字符
直接给出字符,就是精确匹配
匹配符
\d 匹配一个数字 \w 匹配一个数字或者字母 \s 匹配一个空格 Tab 换行符 . 匹配任意字符 ^ 匹配开头 $ 匹配结尾
精确的范围匹配符
[0-9a-zA-Z\_] 匹配一个数字、字母或者下划线 [0-9a-zA-Z\_\$] 匹配字母或下划线或者$ A|B 可以匹配A或B (J|j)ava(S|s)cript 可以匹配 Javascript JavaScript javaScript javascript
修饰匹配符个数
* 任意个 ? 0或者1个 + 一个或者多个 {n} n 个 {n,} n 个以上 {n,m} n 到 m 个
匹配
test
var re = /^\d{3}\-\d{3,8}$/; re.test('010-12345'); // true re.test('010-1234x'); // false re.test('010 12345'); // false
切分字符串
'a b c'.split(/\s+/); // ['a', 'b', 'c'] 'a,b, c d'.split(/[\s\,]+/); // ['a', 'b', 'c', 'd'] 'a,b;; c d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']
分组 ()
正则表达式还有提取子串的强大功能 , 用()表示的就是要提取的分组
var re = /^(\d{3})-(\d{3,8})$/; re.exec('010-12345'); // ['010-12345', '010', '12345'] re.exec('010 12345'); // null
提取时间
var re = /^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$/; re.exec('19:05:30'); // ['19:05:30', '19', '05', '30']
贪婪匹配
正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符
var re = /^(\d+)(0*)$/; re.exec('102300'); // ['102300', '102300', '']
非贪婪匹配 加个?就可以让d+采用非贪婪匹配
var re = /^(\d+?)(0*)$/; re.exec('102300'); // ['102300', '1023', '00']
全局匹配
全局匹配标志 g
全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引var s = 'JavaScript, VBScript, JScript and ECMAScript'; var re=/[a-zA-Z]+Script/g; // 使用全局匹配: re.exec(s); // ['JavaScript'] re.lastIndex; // 10 re.exec(s); // ['VBScript'] re.lastIndex; // 20 re.exec(s); // ['JScript'] re.lastIndex; // 29 re.exec(s); // ['ECMAScript'] re.lastIndex; // 44 re.exec(s); // null,直到结束仍没有匹配到
全局匹配类似搜索,因此不能使用/^...$/,那样只会最多匹配一次
忽略大小写标志 i
多行匹配标志 m