正则表达式( Regular Expression )是一个描述字符模式对象,字符模式就是由一系列字符构成的特殊格式字符串,它由普通字符和元字符构成。正则表达式的主要语法就是对各种字符的功能进行描述。
对于表达式中的元字符,需要进行转义,使其变成原义字符才能正常显示出来。
字符 | 额 |
---|---|
\ | 转化为特殊字符 |
^ | 最前 |
$ | 最末 |
* | 0+ 个 |
+ | 1+ 个 |
? | 0 或 1 |
. | 除换行符外所有单字符 |
(x) | 匹配 x 并记录值。匹配字符串能被结果数组中元素 |
x|y | 匹配 x 或 y |
{n} | n 为正整数,匹配前面的 n 个字符 |
{n , } | n 为正整数,匹配至少 n 个 前面的字符 |
{n , m} | 这里的 n , m 都是正整数,匹配至少 n 个 最多 m 个 前面的字符 |
[xyz] | 支付列表,匹配任意字符,也可以用 - 指出一个范围 |
[^xyz] | 字符补集,匹配除了列出的字符 |
[\b] | 匹配一个空格 |
\b | 匹配单词的分界线 |
\B | 匹配单词的非分界线 |
\cX | X 是一个控制字符,匹配一个字符串的控制字符 |
\d | 匹配一个数字 |
\D | 匹配一个非数字 |
\f | 匹配一个表单符 ( 换页符 ) |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\s | 匹配一个单个 while 空格符,包括空格、 tab 、 form feed 、换行符 |
\S | 匹配一个制表符 |
\v | 匹配一个顶头制表符 |
\t | 匹配一个制表符 |
\w | 匹配所有的数字和字母以及下划线 |
\W | 匹配除了数字、字母以及下划线以外的其它字符 |
\n | 此处 n 是一个正整数,匹配一个正则表达式的最后一个字符串的 n 的值(计数左圆括号) |
\ooctal | 这里的 \ooctal 是一个八进制的 escape 值,而 \xhex 是一个十六进制的 escape 值,允许在一个正则表达式中嵌入 ASCII 码 |
\xhex | 这里的 \ooctal 是一个八进制的 escape 值,而 \xhex 是一个十六进制的 escape 值,允许在一个正则表达式中嵌入 ASCII 码 |
特殊字符转义
表达式中用到的一些元字符不再表示原来的字面意义,如果要匹配这些有特殊意义的元字符,必须使用 " \ " 将这些字符转义为原义字符。需要进行转义的字符有 " $ " 、 " ( " 、 " ) " 、 " * " 、 " + " 、 " . " 、 " [ " 、 " ] " 、 " ? " 、 " \ " 、 " / " 、 " ^ " 、 " { " 、 " } " 、 " | " 。
" \ " 的作用是将下一字符标记为特殊字符、原义字符、反向引用或八进制转义符,所以,要匹配字面意义的 " \ " ,需要使用 " \ " 表示。
const _ = {
Require: /.+/, // 是否为空
Email: /^\w+([-+.]\w+)_@\w+([-.]\w+)_\.\w+([-.]\w+)_$/, // Email
Phone:
/^(?:(\(?:\d{2,3}\))|(\d{3}-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6-7}(-\d{1,4})?$/,
// 电话号码
Mobile: /^(?:(?:\(\d{2,3}\))|(?:\d{3}-))?13\d{9}$/, // 手机号码
Url: /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[/=?%\-&_~`@[\]':+!]_([^<>""])\*$/,
// 使用 HTTP 协议的网址
IdCard: 'this.IsIdCard(value)',
Currency: /^\d+(\.\d+)?$/, // 货币
Number: /^\d+$/, // 数字
Zip: /^[1-9]\d{5}$/, // 邮政编码
QQ: /^[1-9]\d{4,12}$/, // QQ 号码
Integer: /^[-+]?\d+$/, // 整数
Double: /^[-+]?\d+(\.\d+)?$/, // 实数
English: /^[A-Za-z]+$/, // 英文
};