js正则总结

230 阅读2分钟

1正则的含义

js封装成了一个RegExp构造函数 regular 规则 expression 表达式

2.如何创建一个正则

2.1 var reg = new RegExp('正则表达式','正则的参数');

2.2 var reg = /d/ 正则字面量 推荐使用

3如何书写正则

3.1普通字符 a b c ,

3.2特殊字符

3.2.1元字符

  • \d 代表数字 digtal
等价于 [0-9]。
var reg = /\d/; 字符串中只要包含数字就符合要求

  • \D 代表非数字
等价于 [^0-9]。
var reg = /\D/; 字符串中只要包含非数字字符就符合要求
  • \w 代表单字字符 数字,字母,下划线 word
等价于'[A-Za-z0-9_]'。
var reg = /\w/; 只要包含数字,字母或者下划线就符合要求
  • \W 代表非数字,非字母,非下划线
等价于 '[^A-Za-z0-9_]'
var reg = /\W/; 只要包含非数字,非字母,非下划线就符合要求
  • \s 代表的是所有的空白字符 space

var reg = /\s/; 只要包含空白字符,就符合要求

  • \S 代表非空白字符

var reg = /\S/ 只要包含非空白字符,就符合要求 \r 回车 \n 换行

  • . 代表非换行的其他所有单个字符

var reg = /./ 只要包含非换行的所有其他字符就符合条件(除了换行,其他都代表)

  • ^ 代表以谁开头

var reg = /^a/ 必须以a开头

  • $ 代表以谁结尾

var reg = /a$/; 必须以a结尾

3.2.2限制符

  • * 代表 0 次 或多次
例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
var reg = /^a*$/ 只能出现a ,但是不限制a的个数
  • + 代表 1 次 或 多次
例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
var reg = /^a+$/ a至少出现一个次
  • ? 代表 0 次 或 1次
例如,"do(es)?" 可以匹配 "do""does" 。? 等价于 {0,1}。
var reg = /^a?$/; //a出现0次或1次
  • {n} n代表出现的次数
n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
  • {n,} 至少出现n次
n是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'
  • {n,m} 出现n - m次
var reg = /^a{5,8}$/ //a出现5次到8次

3.2.3其他字符

[] 占一个字符位,匹配中括号内任意一个字符

[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a''z' 范围内的任意小写字母字符。

[^] 取反 , 不能包含中括号内的字符

\ 转义符

| 或者 ,会将左右两边的全部分开

x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z""food"'(z|f)ood' 则匹配 "zood""food"

() 分组 (a|b)==[ab]

[\u4e00-\u9fa5] 匹配中文

易出错点:

 var reg = /^ab$/; //字符串只能包含ab

var reg = /^ab{4}$/; //要求是 abbbb

4正则的方法

4.1 匹配 reg.test(str),返回布尔值,进行表单等验证。

例子:匹配日期

var dateStr = '2015-10-10';

var reg = /^\d{4}-\d{1,2}-\d{1,2}$/

console.log(reg.test(dateStr));

4.2 提取 reg.exec(str) str.match(reg) 常用字符串的方法

标志说明
i忽略大小写
g全局匹配
gi全局匹配+忽略大小写

4.3替换 str.replace([RegExp|string], '替换的值')

//替换所有,为|
var str = "abc,efg,123,abc,123,a"; 
str = str.replace(/,/g, "|"); // \转义 |或者,选择两者中的一个 g全局匹配 console.log(str);

常用正则

身份证: /^\d{15}$|^\d{18}$|^\d{17}(\d|X|x)$/, 
姓名(2个汉字以上): /^[\u4e00-\u9fa5]{2,}$/g, 非数子: /[^0-9]/g,
手机号: /^1[2-9]\d{9}$/g 
正数: /^\d*\.?\d+$/;
负数: /^-\d*\.?\d+$/ 
数字 /^-?\d*\.?\d+$/ 
正整数 /^\d+$/ 
负整数 /^-\d+$/
整数 /^-?\d+$/
邮箱 /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ 
登录账号 /^[a-zA-Z0-9_-]{4,16}$/;