一、js方法
string.search(regexp)
匹配首次出现的下表,未匹配则返回-1
('1222222222222222222').search(/(\S{1,10})$/)
// 9
string.replace(regexp, newString)
将首次出现的内容进行替换
('hellow word').replace(/word/, '明睿')
// 'hellow 明睿'
string.match(regexp)
执行正则表达式匹配,匹配成功时返回一个数组
('hello word').match(/word/)
// ["word"]
string.matchAll(regexp)
执行正则表达式匹配,匹配字符串所有符合条件的内容
[...('hello word word').matchAll(/word/g)]
RegExp.test(string)
检测一个字符串是否匹配某个模式
/word/.test('hellow word')
// true
RegExp.exec(string)
执行正则表达式匹配,匹配成功时返回一个数组,匹配失败返回 null,同string.match(regexp)
/word/.exec('hellow word word')
// ["word"]
二、正则规则
1、元字符
| 元字符 | 描述 |
|---|---|
| . | 查找单个字符,出换行和结束符 |
| \w | 查找单词字符 |
| \W | 查找非单词字符 |
| \d | 查找数字 |
| \D | 查找非数字 |
| \s | 查找空白字符 |
| \S | 查找非空白字符 |
| \b | 匹配单词边界 |
| \B | 匹配非单词边界 |
| \0 | 查找NUL字符 |
| \n | 查找换行符 |
| \f | 查找换页符 |
| \r | 查找回车符 |
| \t | 查找制表符 |
| \v | 查找垂直制表符 |
| \xxx | 查找以八进制xxxx规定的字符 |
| \xdd | 查找以十六进制dd规定的字符 |
| \uxxxx | 查找以十六进制xxxx规定的Unicode字符 |
2、其他字符
| 字符 | 描述 |
|---|---|
| g | 全局匹配 |
| i | 忽略大小写 |
| ^ | 匹配开头 |
| $ | 匹配结尾 |
| () | 表示字符范围 |
| [] | 表示匹配其中任一字符 |
| | | 表示或者 |
| n+ | 匹配包含至少一个n的字符串 |
| n* | 匹配包含零个或多个n的字符串 |
| n? | 匹配包含零个或一个n的字符串 |
| n{x} | 匹配包含x个n的字符串 |
| n{x,y} | 匹配包含x到y个n的字符串 |
| n{x,} | 匹配包含至少x个n的序列字符串 |
| ?? | 相当于{0,1}? |
| +? | 相当于{1,}? |
| *? | 相当与{0,}? |
| ?= | 前瞻运算符,匹配位置不变 |
3、常见正则表达式
- 手机号:
/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/ - email:
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ - 地址:
/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i - 身份证号:
/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/ - 邮编:
/^[1-9]\d{5}(?!\d)$/ - 匹配日期yyyy-MM-dd:
/^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/