[关闭]
@hotjp 2018-05-28T09:09:00.000000Z 字数 1138 阅读 1092

正则基础及常用正则

培训


为解决各种前端字段验证不一致,网上搜索出的正则良莠不齐的情况,特整理出正则的基础和常用的正则列表,希望各位能通过学习达到有阅读、调试或编写正则的能力。

首先,正则是一种搜索模式

正则表达式是由一个字符序列形成的搜索模式。

当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。

正则表达式可用于所有文本搜索和文本替换的操作。

正则的语法如下:

  1. /正则表达式主体/修饰符(可选)

正则在不同语言中可能略有差异,解析器也在不同环境中不完全相同,经典的表达式结构是 perl正则,基本语法在个语言中相同,特殊的操作可能略有差异。

以js中的正则为例

  1. var rule = /abc/i

以上示例中是匹配字母“abc”,i修饰符的含义是不区分大小写。

修饰符

修饰符 说明
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
  1. 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的字符串

使用RegExp对象

js中我们使用正则的方式是利用RegExp对象

常规声明方式如下

  1. // 可以搜索不区分大小写的字母a
  2. var ruleA = new RegExp(/a/i);

推荐的快速声明方式如下

  1. // 可以搜索不区分大小写的字母a
  2. var ruleA = /a/i;

将字符串转为正则

  1. // 完整正则
  2. var rule = '/a/i'
  3. var ruleRegExp = eval(rule);
  4. // 正则条件
  5. var str = '^[\w\u4e00-\u9fa5]{6,8}$';
  6. var strRegExp = new RegExp(str);

常用正则

  1. // 手机号码 第一位是1,第二位是3、4、5、6、7、8、9的11位数
  2. var tel = /^1[3|4|5|6|7|8|9]\d{9}$/;
  3. // 用户密码 英文大小写及数字 6-30位
  4. var password = /^[a-zA-Z0-9]{6,30}$/;
  5. // 邮箱
  6. var email = /[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/;
  7. // 用户名 纯中文
  8. var userName = /^[\w\u4e00-\u9fa5]{6,8}$/;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注