js---正则

151 阅读1分钟

正则规则

  1. 限制开始结束的
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置

2.匹配次数的

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do""does" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,}  是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'

3.匹配特定的

x|y	匹配 x 或 y。例如,'z|food' 能匹配 "z""food"'(z|f)ood' 则匹配 "zood""food"。
[xyz]	字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[a-z]	字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a''z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a''z' 范围内的任意字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
\W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'

注意 [^] 表示取反。

常用正则

身份证: /^\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}$/;

正则使用场景

1.test() 返回布尔值,进行表单等验证。

reg.test(val) 其中reg为某个正则,val为待验证的值

2.str.replace(reg,xxx) 实现按正则要求进行字符串替换,返回值为替换后的目标值

document.getElementById('name').oninput = function() {
    this.value = this.value.replace(/[^\u4e00-\u9fa5]/g, '')
}

上面代码实现的效果是 该输入框只能输入文字效果