regex - 使用正则表达式仅允许字符串中包含 2 位数字

标签 regex

我需要正则表达式,只允许在输入字段中输入最大 2 位数字(或实际所需的限制)。

字段要求如下:

  1. 允许a-z A-Z
  2. 允许0-9
  3. 允许 -. 字符
  4. 允许空格 (\s)
  5. 不允许允许超过 2 位数字
  6. 不允许使用任何其他特殊字符
  7. 不允许

我已经根据 SO 上的几个答案设法组合了以下正则表达式:

^(?:([a-zA-z\d\s\.\-])(?!([a-zA-Z]*\d.*){3}))*$  

上面的正则表达式非常接近。它成功地适用于以下情况:

  1. 测试 12 测试
  2. 测试12
  3. 测试-测试.12

但它允许输入:

123(但不是 1234,所以很接近)。

仅在字段中输入数字时,只需要允许输入12

我需要一些帮助来找到比我当前的 regex 更高效、更干净(如果可能)的解决方案 - 但它仍然必须是 regex,而不是 JS.

最佳答案

您可以使用积极的前瞻,例如

(?=^(?:\D*\d\D*){2}$) # only two digits
^[- .\w]+$            # allowed characters

参见a demo on regex101.com .

关于regex - 使用正则表达式仅允许字符串中包含 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253676/

相关文章:

java - codingBat plusOut 使用正则表达式

java - 多次匹配后视/前视

php - 替换空格,但仅在限制之间替换 php

java - 正则表达式替换重复字符

JavaScript 正则表达式查找字符串

regex - VS Code 多行搜索和替换 HTML/XML 标签?

正则表达式将单词与数字匹配,但如果它只是数字则不匹配

python - 反转的正则表达式模式比原始模式慢得多

JavaScript:在字符串中搜索字符串

javascript - 正则表达式删除除回车符以外的空格