RegEx 仅匹配数字和最多 3 个字符

Posted

技术标签:

【中文标题】RegEx 仅匹配数字和最多 3 个字符【英文标题】:RegEx for matching only digits and a maximum of 3 characters 【发布时间】:2019-02-13 03:41:03 【问题描述】:

谁能给我一个提示,为什么下面的 RegEx 不起作用?我正在尝试验证一个字符串,该字符串必须在开头或结尾至少包含一个数字 0-9,并且最多包含 3 个字符(A-Z)并包括空格。我试过了:

^[0-9]1,\s*\w0,3|\w0,3\s*[0-9]1,

但上面的 RegEx 匹配包含这些字符的所有内容。但我想确保它只有在我的字符串中不超过所需的字符和数字时才匹配。

应该返回真:

9 aaa 99244 aaa ABC 321 9A

应该返回 false:

9999 fjejdhshsh 哑巴 9嘟嘟嘟 Hdjdjso djs 99

如果有人能给我提示,我将不胜感激。

【问题讨论】:

试试this demo at regex101。 【参考方案1】:

有几件事:

你只是锚定^第一个选项。

如果你想断言整个字符串,你可能也应该使用$

否则第二个 |\w0,3\s* 替代方案可能匹配 anywhere(并且实际上也匹配空字符串)

此外,使用\d+ 而不是[0-9]1, 使其更具可读性

但对 [A-Z][0,3 而不是 \w 更严格(可能匹配数字)。

所以本质上:

/^(
     \d+ \s* [A-Z]0,3    # 123 ABC
  |
     [A-Z]0,3 \s* \d+    # ABC 123
  )$
/ix   # /x flag for readability

【讨论】:

感谢马里奥,你为我节省了几个小时。我的最终版本是这个:/(^\d+\s*[A-Za-z]0,2|^[A-Za-z]0,2\s*\d+)$/uisx

以上是关于RegEx 仅匹配数字和最多 3 个字符的主要内容,如果未能解决你的问题,请参考以下文章

R REGEX匹配-至少1个小写字母,1个数字,并且没有8个长度的特殊字符[重复]

RegEx 用于匹配除逗号分隔的数字之外的所有字符

正则表达式Regex

javascript正则表达式匹配3个数字和3个字母

Groovy:RegEx用于匹配字母数字和下划线和短划线

RegEx(在 JavaScript 中查找/替换) - 匹配非字母数字字符但忽略 - 和 +