正则表达式常见验证问题美元验证、密码验证

正则表达式常见验证问题美元验证、密码验证

1.验证是否为11位有效手机号码?

  • 以1为开头
  • 第二位为3,4,5,7,8中的任意一位
  • 最后以0-9的9个整数结尾
var reg = /^1[34578]\d{9}$/;
console.log(reg.test('13456448948')); // true

解析:
^1            以1开头
[34578]    表示从3,4,5,7,8中任选一位匹配,放在第二位
\d             等价于[0-9]表示从0到9中任选一个
\d{9}$       匹配9个[0-9]中的数字, $为结尾符
^$             一起使用会精确匹配,只有满足表达式的内容才会匹配成功

2.判断是否为年月格式

  • XXXX-XX
  • 其中 X 为 Number 类型
var reg = /^\d{4}-(1[0-2]|0[1-9])$/;
console.log(reg.test('2021-09')); // true

解析:
^\d{4}            表示开头匹配4个[0-9]的数字
(1[0-2]|0[1-9])        候选,表示匹配1[0-2]或者0[1-9]

3.验证美元格式

  • 以 $ 符开始
  • 整数部分,从个位起,满 3 个数字用 , 分隔
  • 如果有小数,则小数部分长度最多为 2
  • 正确的格式如:$1,123,112.33 或者 $3.06,错误的格式如:$02,876,121.12、$2,876,12.12 或者 $56,123.30
var reg = /^\$[1-9]\d{0,2}(,\d{3})*(\.[1-9]\d|\.\d[1-9])?$/;
console.log(reg.exec('$34,344.03'));

解析:
\$        将$符转义成普通字符,以 $ 符开始
\d        表示[0-9],从0到9中匹配一个整数
*          数量词,表示>=0
\d{3}        等效于[0-9][0-9][0-9],匹配3个整数
(,\d{3})*        表示匹配大于或等于0个(,\d{3})*,满 3 个数字用 , 分隔
?            数量词,表示0或1
(.[1-9]\d|.\d[1-9])?        匹配一个(.[1-9]\d|.\d[1-9])或者不匹配,代表可以有小数也可以没有小数。
|          候选,这里是选择 .[1-9]\d 或者 .\d[1-9]

注意点:$结束符和 . 是特殊字符,不能直接使用,需要通过 \ 进行转义成普通字符

4.密码验证

  • 包含大写,小写和数字,和特殊字符(!,@,#,%,&)
  • 大于6位小于20位

解析:

这里用到前瞻表达式

表达式名称描述
(?=exp)正向前瞻匹配后面满足表达式exp的位置
(?!exp)负向前瞻匹配后面不满足表达式exp的位置
// 正向前瞻
var str = 'Hello, Hi, I am Hilary.';
var reg = /H(?=i)/g;
var newStr = str.replace(reg, "T");
console.log(newStr);//Hello, Ti, I am Tilary.

简单来说,正向前瞻可以解释为后面一定要匹配什么
H(?=i) 表示 H 后面一定要匹配 i 才为true

密码验证问题:

var reg = /(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#%&])^([A-Za-z\d!@#%&]{6,20})$/;
console.log(regPsw.test('A2Aa1&bB&')); // true

.      表示匹配除换行符\n和回车符之外的任何单个字符,等效于 [^\n\r]
.*     表示匹配除换行和回车之外的任意个任意字符
(?=.*[A-Z])   表示从开头到结尾,一定要匹配任意个任意字符+[A-Z],简单来说就是,一定要匹配[A-Z],也就是包含大写
[A-Za-z\d!@#%&]    表示匹配大小写、数字、特殊字符的任意一个
{6,20}    表示匹配 6 到 20 个字符,包括 6 和 20

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值