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 个字符的主要内容,如果未能解决你的问题,请参考以下文章