我需要正则表达式,只允许在输入字段中输入最大 2 位数字(或实际所需的限制)。
字段要求如下:
- 允许
a-z
A-Z
- 允许
0-9
- 允许
-
和.
字符 - 允许空格 (
\s
) - 不允许允许超过 2 位数字
- 不允许使用任何其他特殊字符 不允许
我已经根据 SO 上的几个答案设法组合了以下正则表达式
:
^(?:([a-zA-z\d\s\.\-])(?!([a-zA-Z]*\d.*){3}))*$
上面的正则表达式
非常接近。它成功地适用于以下情况:
- 测试 12 测试
- 测试12
- 测试-测试.12
但它允许输入:
123
(但不是 1234
,所以很接近)。
当仅在字段中输入数字时,只需要允许输入12
。
我需要一些帮助来找到比我当前的 regex
更高效、更干净(如果可能)的解决方案 - 但它仍然必须是 regex
,而不是 JS
.
最佳答案
您可以使用积极的前瞻,例如
(?=^(?:\D*\d\D*){2}$) # only two digits
^[- .\w]+$ # allowed characters
关于regex - 使用正则表达式仅允许字符串中包含 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253676/