如何编写可匹配至少2位数字及%、*特殊字符的正则表达式?
你之前写的正则^([*%]*[0-9]{2,}[*%\d]*)$的缺陷是要求两个数字必须连续,无法匹配*1*7这类数字分散的合法场景。
符合要求的正则如下:
^(?=(?:\D*\d){2})[0-9*%]+$
规则说明
- 正向预查
(?=(?:\D*\d){2}):保证字符串中至少存在2个数字,对数字的位置没有限制 - 字符集
[0-9*%]+:限制整个字符串只能出现数字、*、%三类字符,不允许其他字符存在 - 首尾的
^和$限制匹配整个字符串,避免部分匹配的问题
验证结果
合法示例全部匹配成功
12%2378%12***3*1*7
非法示例全部匹配失败
8(仅1个数字)*7(仅1个数字)6%(仅1个数字)AB(包含未允许的字母字符)%4*(仅1个数字)
内容的提问来源于stack exchange,提问作者gandhiromit77
相关产品推荐
相关产品推荐

