一、常用字符类
- \w 等价于[a-zA-Z0-9]
- \W 等价于[^a-zA-Z0-9]
- \s 任何Unicode空白符(包括空格符、制表符等)
- \S 任何非Unicode空白符
- \d 等价于[0-9]
- \D 等价于[^0-9]
二、重复次数
- {n,m} 匹配前一项至少n次,至多m次
- {n,} 匹配前一项至少n次
- {n} 匹配前一项n次
- ? 匹配前一项0次或1次
- +匹配前一项1次或多次
- *匹配前一项0次或多次
三、分组和引用
- | 相当于“或”
- (…) 将几个项组合成一个单元,这个单元可通过”*”、”+”、”?”、”|”等符号修饰,而且可记忆匹配的字符串
- (?:…)把项组合到一个单元,但不记忆
- \n 引用第n个分组第一次匹配到的字符,组索引是从左数的左括号,”(?:”形式的分组不参与索引(索引从1开始)
四、锚字符
- ^ 匹配字符串的开头,多行检索中匹配一行的开头
- $ 匹配字符串的结尾,多行检索中匹配一行的结尾
- \b 匹配一个单词的边界
- \B 匹配非单词边界的位置
- (?=p)要求接下来的字符都匹配p,但不包括匹配p的字符
- (?!p) 要求接下来的字符都不匹配p
五、修饰符
- i 执行不区分大小写的匹配模式
- g 执行全局匹配模式,即找到所有匹配的字符
- m 执行多行匹配模式
六、相关String方法
- search()
参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,找不到就返回-1
"JavaScript".search(/Java/i);//返回0
- replace()
用指定的字符串替换匹配到的子串。第一个参数是一个正则表达式,第二个参数是要进行替换的字符串,返回替换后的字符串
"JavaScriptjavascriptjavascript".replace(/javascript/gi,"Java");//返回"JavaJavaJava"
- match()
参数是一个正则表达式,返回一个由匹配结果组成的数组。如果正则表达式设置了修饰符g,则该方法返回的数组包含字符串中的所有匹配结果。
"1 plus 1 equals 2".match(/\d/g);//返回["1", "1", "2"]
当正则表达式不是全局检索时,它也会返回一个数组。这时数组的第一个元素就是匹配的字符串,余下的元素是正则表达式中圆括号括起来的子表达式匹配。
"123 http://wwww.test.com/hahaha123".match(/(\w+):\/\/([\w.]+)\/(\S*)/);//返回["http://wwww.test.com/hahaha123", "http", "wwww.test.com", "hahaha123"]
- split()
用于将字符串拆成子串组成的数组
"1, 2, 3".split(/\s*,\s*/);//返回["1", "2", "3"]