教程
RegExp特殊字符
符号 | 含义 |
---|---|
\d | [0-9] 表示数字字符 |
\w | [a-zA-Z0-9_] 表示数字,大小写字母及下划线 |
\s | [\t\n\x0B\f\r] 表示空白符 |
[a-zA-Z0-9] | 表示大小写字母,数字字符 |
\b | 表示单词边界 |
. | 表示除回车符换行符的所有字符 |
* | 出现0次或多次(任意次) |
+ | 出现1一次或多次(最少出现一次) |
? | 出现0次或1次(最多出现一次) |
x{3} | 表示x字符出现3次 |
^ | 以什么字符做为开头 |
$ | 以什么字符做为结尾 |
[^abc] | 表示不是abc的所有字符 |
abc{3,5}? | ?在量词后面表示非贪婪模式,若字符串匹配,c取3个 |
(abc){10} | 表示abc字符连续出现10次 |
abc(?=def) | 匹配后面为def的abc |
RegExp 相关方法
RegExp.prototype.test(str)
1 | //测试字符串参数中是否存正则表达式模式,如果存在则返回true |
RegExp.prototype.exec(str)
原理
使用结果可以等价于String.prototype.match()的非全局匹配,在string中找到了匹配的文本,则返回一个包含这些文本的数组,否侧返回null。不区分是否全局匹配,只匹配一次
1 | var result = /(\d+)-(\w+)/.exec('12-ab'); |
String.prototype.replace(str)
使用情景
1 | 1、当未找到匹配项的时候,返回原始字符串。 |
特殊情况$
1 | $1,$2,$3...$99 第一个到第99子表达式相匹配的文本。 |
案例
1 | 案例1: |
特殊字符
列表
1 | \b //匹配一个字边界,即字与空格间的位置,空格,换行符甚至中文都算边界 |
解释说明
1 | (/\bmo/g).test("moon") //true 意思是mo的左边是边界,即m左边没有任何东西 |
分支条件
含义
‘|’讲不同的规则分隔开,表示或,但是和’||’符号不同,这个是将正则整体分开
解释说明
1 | var a = /^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/ |
分组
含义
()表示分组
注意:正常的()需要转义
解释说明
1 | var a = /(\d{1,3}\.){3}\d{1,3}/ |
联合使用
1 | 1、重复使用 |
反义
列表
1 | \W 匹配任意不是字母,数字,下划线字符 |
末尾不跟字母
使用场景
1 | // 匹配q后面不是字母u的字母q的单词。 |
记忆方法
1 | ?表示怀疑,?=表示后面紧跟,?!表示后面不能跟,?<=表示前面紧跟,?<!表示前面不紧跟 |
解释说明
1 | \d{3}(?=a) //匹配三位数字,而且这三位数字的后面必定是a |