校验邮箱正则表达式
// 校验邮箱规则 var checkEmail = (rules, value, callback) => { const regEmail = /^([a-zA-Z0-9_-])+@+([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/ if (regEmail.text(value)) { return callback() } callback(new error('请输入合法的邮箱')) }
校验手机号正则表达式
// 校验手机规则 var checkMobile = (rules, value, cb) => { const regMobile = /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57]|19[0267])[0-9]{8}$/ if (regMobile.text(value)) { return cb() } cb(new error('请输入合法的手机号')) }
校验固定电话号正则表达式
// 校验固定电话号 var checkTel= (rules, value, cb) => { const regtel = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel) if (regtel.text(value)) { return cb() } cb(new error('请输入合法的电话号')) }
校验身份证正则表达式
// 校验身份证规则 var checkIDcard = (rules, value, cb) => { const regIDcard = (^\d{15}$)|(^\d{17}([0-9]|X)$) if (regIDcard.text(value)) { return cb() } cb(new error('请输入合法的身份证号')) }
其他常用
提取信息中的网络链接: (h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 提取信息中的邮件地址: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 提取信息中的图片链接: (s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 提取信息中的IP地址: (\d+)\.(\d+)\.(\d+)\.(\d+) 提取信息中的中国电话号码(包括移动和固定电话): (\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 提取信息中的中国邮政编码: [1-9]{1}(\d+){5} 提取信息中的中国身份证号码: \d{18}|\d{15} 提取信息中的整数: \d+ 提取信息中的浮点数(即小数): (-?\d*)\.?\d+ 提取信息中的任何数字: (-?\d*)(\.\d+)? 提取信息中的中文字符串: [\u4e00-\u9fa5]* 提取信息中的双字节字符串 (汉字): [^\x00-\xff]*
方法 | 描述 |
---|---|
exec |
一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。 |
test |
一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。 |
match |
一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。 |
matchAll |
一个在字符串中执行查找所有匹配的String方法,它返回一个迭代器(iterator)。 |
search |
一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。 |
replace |
一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。 |
split |
一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String 方法。 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
特殊字符
标志 | 描述 |
---|---|
g |
全局搜索。 |
i |
不区分大小写搜索。 |
m |
多行搜索。 |
s |
允许 . 匹配换行符。 |
u |
使用unicode码的模式进行匹配。 |
y |
执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。 |
字符 | 含意 |
\ | 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 |
^ | 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" |
$ | 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" |
* | 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa |
+ | 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa |
? | 匹配前面元字符0次或1次,/ba*/将匹配b,ba |
(x) | 匹配x保存x在名为$1...$9的变量中 |
x|y | 匹配x或y |
{n} | 精确匹配n次 |
{n,} | 匹配n次以上 |
{n,m} | 匹配n-m次 |
[xyz] | 字符集(character set),匹配这个集合中的任一一个字符(或元字符) |
[^xyz] | 不匹配这个集合中的任何一个字符 |
[\b] | 匹配一个退格符 |
\b | 匹配一个单词的边界 |
\B | 匹配一个单词的非边界 |
\cX | 这儿,X是一个控制符,/\cM/匹配Ctrl-M |
\d | 匹配一个字数字符,/\d/ = /[0-9]/ |
\D | 匹配一个非字数字符,/\D/ = /[^0-9]/ |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\s | 匹配一个空白字符,包括\n,\r,\f,\t,\v等 |
\S | 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ |
\t | 匹配一个制表符 |
\v | 匹配一个重直制表符 |
\w | 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9] |
\W | 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。 |
使用方式
用re = new RegExp("pattern",["flags"]) 的方式比较好 |
vaScript动态正则表达式问题 请问正则表达式可以动态生成吗? |