如何编写仅允许特定12倍数纯数值输入的正则表达式
解决仅允许特定12倍数输入的正则问题
你遇到的问题很典型——原来的正则只是匹配字符串中包含这些数值的片段,而非要求整个输入完全等于指定数值。所以只要输入里藏着12、24这类数字,不管后面跟着字母、特殊字符,都会被判定为匹配通过。
要彻底解决这个问题,只需要给正则加上字符串锚点,强制要求输入内容完全匹配指定数值之一。正确的正则表达式如下:
^(12|24|36|48|60|72|84|96|108|120)$
为啥这个正则能生效?
^标记字符串的起始位置,确保输入从指定数值开头;$标记字符串的结束位置,确保输入到指定数值就收尾,没有多余字符;- 括号内的
|用来分隔所有允许的选项,整个表达式的逻辑是:输入内容必须严格等于12、24、36…120中的某一个。
举几个测试场景:
- 输入
12→ 完全匹配,验证通过; - 输入
12abc→ 结尾超出12的范围,不匹配; - 输入
!@#24→ 开头不符合24的起始,不匹配。
如果觉得列出所有选项有点繁琐,也可以利用“12的1到10倍”这个规律简化表达式,但对于数量不多的固定值,直接列出反而更直观、不容易出错。
内容的提问来源于stack exchange,提问作者wizard
相关产品推荐
相关产品推荐

