常用元字符
符号 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符。 |
\w | 匹配字母或数字或下划线或汉字。 |
\s | 匹配任意的空白符。 |
\d | 匹配数字。 |
\b | 匹配单词的开始或结束。 |
[ck] | 匹配包含括号内元素的字符 |
^ | 匹配行的开始。 |
$ | 匹配行的结束。 |
\ | 对下一个字符转义。比如$是个特殊 的字符。要匹配$的话就得用\$ |
| | 分支条件,如:x|y匹配 x 或 y |
反义元字符
符号 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符。 |
\S | 匹配任意不是空白符的字符。等价于 [^ \f\n\r\t\v]。 |
\D | 匹配任意非数字的字符。等价于 [^0-9]。 |
\B | 匹配不是单词开头或结束的位置。 |
[^CK] | 匹配除了CK以外的任意字符。 |
特殊元字符
符号 | 说明 |
---|---|
\f | 匹配一个换页符。等价于 \x0c 和 \cL |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ |
\r | 匹配一个回车符。等价于 \x0d 和 \cM |
\t | 匹配一个制表符。等价于 \x09 和 \cI |
\v | 匹配一个垂直制表符。等价于 \x0b 和 \cK |
限定符
符号 | 说明 |
---|---|
* | 匹配前面的子表达式零次或多次。 |
+ | 匹配前面的子表达式一次或多次。 |
? | 匹配前面的子表达式零次或一次。 |
{n} | n 是一个非负整数。匹配确定的 n 次。 |
{n,} | n 是一个非负整数。至少匹配n 次。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
懒惰限定符
符号 | 说明 |
---|---|
*? | 重复任意次,但尽可能少重复。 如 "acbacb" 正则 "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后, 只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" 。 |
+? | 重复1次或更多次,但尽可能少重复。与上面一样,只是至少要重复1次。 |
?? | 重复0次或1次,但尽可能少重复。如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"。 |
{n,m}? | 重复n到m次,但尽可能少重复。如 "aaaaaaaa" 正则 "a{0,m}" 因为最少是0次所以取到结果为空 |
{n,}? | 重复n次以上,但尽可能少重复。如 "aaaaaaa" 正则 "a{1,}" 最少是1次所以取到结果为 "a" |
捕获分组
符号 | 说明 |
---|---|
(exp) | 匹配exp,并捕获文本到自动命名的组里。 |
(? |
匹配exp,并捕获文本到名称为name的组里。 |
(?:exp) | 匹配exp,不捕获匹配的文本,也不给此分组分配组号以下为零宽断言。 |
(?=exp) | 匹配exp前面的位置。 如 "How are you doing" 正则"(? 并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do"; |
(?<=exp) | 匹配exp后面的位置。 如 "How are you doing" 正则"(? 并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing"; |
(?!exp) | 匹配后面跟的不是exp的位置。如 "123abc" 正则 "\d |
(?<!exp) | 匹配前面不是exp的位置。 如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123" |
牛刀小试一下下,常用正则Query封装
var regex = window.regex || (function (document, $) {
var _reg = {};
/* 'pwd':/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,16}$/,//密码 */
//验证数字
$.extend(_reg, {
'num': /^\d+$/, //数字
'znum': /^[1-9](\d+)?$/, // 大于0的数字
'float': /^[-]{0,1}(\d+)[\.]+(\d+)$/, //浮点数
'money': /^\d{1,12}(?:\.\d{1,3})?$/, // money
'idCard': /^\d{15}$|^\d{18}$|^\d{17}[xX]$/, //身份证
'idCardStrict':/^(\d{6})([1-2])(\d{3})((?:0[1-9])|(?:1[0-2]))((?:0[0-9])|(?:[1-2][0-9])|(?:3[0-1]))(\d{3})(\d{1})$/,
'qq': /^[1-9]\d{4,15}$/, //QQ
'pwd': /^[\@A-Za-z0-9]{6,16}$/, //密码
'areacode': /^(0[1,2]{1}\d{1})$|^(0[3-9]{1}\d{2})$/, //区号
'tel': /^\d{7,8}$/, // 固话格式
'mobile': /^((\+86)|(\(\+86\)))?-?(13|14|15|18|17)[0-9]{9}$/, //验证手机号码
'telephone': /^(((\+)?86)|(\(\+86\)))?-?((((0)?[1,2]{1}\d{1})?-?\d{8})|((0[3-9]{1}\d{2})?-?\d{7,12}))-?(\d{1,8})?$/, //验证固定电话
'phone': /^((\+86)|(\(\+86\)))?-?(13|14|15|18|17)[0-9]{9}$|^((\+86)|(\(\+86\)))?-?(((0[1,2]{1}\d{1})?-?\d{8})|((0[3-9]{1}\d{2})?-?\d{7,8}))$/, //手机号码和固定电话
'zipcode': /^\d{6}$/ //验证邮编
});
//验证字符串
$.extend(_reg, {
'email': /^\w{1,16}([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, //邮箱
'chinese': /^[\u4E00-\u9FA5]+$/, //仅汉字
'char': /^[A-Za-z]+$/, //仅仅是字母
'charn': /^[A-Za-z0-9]+$/, //数字加字母
'nospecial': /^[\u4E00-\u9FA5A-Za-z0-9]+$/, // 不包含特殊字符
'url': /^((http|https|ftp):\/\/)?(\w(\:\w)?@)?([0-9a-z_-]+\.)*?([a-z0-9-]+\.[a-z]{2,6}(\.[a-z]{2})?(\:[0-9]{2,6})?)((\/[^?#<>\/\\*":]*)+(\?[^#]*)?(#.*)?)?$/,
'loginName': /^(13|14|15|18|17)[0-9]{9}$|^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, // 用户名
'userName': /^[\u4e00-\u9fa5]{2`,4}$|[a-zA-Z]{4,20}$/, //真实姓名
'nickName': /^([a-zA-Z\u4e00-\u9fa5]{1}[a-zA-Z0-9_\u4e00-\u9fa5]{3,19})$/ //昵称
});
return _reg;
})(document, window.jQuery);
window.regex = regex;