@hotjp
2018-05-28T09:09:00.000000Z
字数 1138
阅读 1092
培训
为解决各种前端字段验证不一致,网上搜索出的正则良莠不齐的情况,特整理出正则的基础和常用的正则列表,希望各位能通过学习达到有阅读、调试或编写正则的能力。
首先,正则是一种搜索模式
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
正则的语法如下:
/正则表达式主体/修饰符(可选)
正则在不同语言中可能略有差异,解析器也在不同环境中不完全相同,经典的表达式结构是 perl正则,基本语法在个语言中相同,特殊的操作可能略有差异。
以js中的正则为例
var rule = /abc/i
以上示例中是匹配字母“abc”,i
修饰符的含义是不区分大小写。
修饰符 | 说明 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
var rule = /[abc]/i
以上示例中是包含字母“abc”,[]
是一种正则“模式”
表达式 | 说明 |
---|---|
[abc] | 查找方括号之间的任何字符。。 |
[0-9] | 查找任何从 0 至 9 的数字。。 |
(x|y) | 查找任何以 | 分隔的选项。 |
元字符是拥有特殊含义的替代字符
表达式 | 说明 |
---|---|
\d | 查找数字 |
\s | 查找空白字符,空格 tab等。 |
\b | 匹配单词边界 |
\uxxxx | 查找以十六进制数, xxxx 是规定的 Unicode 字符。 |
表达式 | 说明 |
---|---|
n+ | 匹配任何包含至少一个n的字符串 |
n* | 匹配任何包含0个或多个n的字符串 |
n? | 匹配任何包含0个或1个n的字符串 |
js中我们使用正则的方式是利用RegExp对象
常规声明方式如下
// 可以搜索不区分大小写的字母a
var ruleA = new RegExp(/a/i);
推荐的快速声明方式如下
// 可以搜索不区分大小写的字母a
var ruleA = /a/i;
将字符串转为正则
// 完整正则
var rule = '/a/i'
var ruleRegExp = eval(rule);
// 正则条件
var str = '^[\w\u4e00-\u9fa5]{6,8}$';
var strRegExp = new RegExp(str);
// 手机号码 第一位是1,第二位是3、4、5、6、7、8、9的11位数
var tel = /^1[3|4|5|6|7|8|9]\d{9}$/;
// 用户密码 英文大小写及数字 6-30位
var password = /^[a-zA-Z0-9]{6,30}$/;
// 邮箱
var email = /[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/;
// 用户名 纯中文
var userName = /^[\w\u4e00-\u9fa5]{6,8}$/;