php - RegEx 仅匹配数字和最多 3 个字符
问题描述
有人可以给我一个提示,为什么以下 RegEx 不起作用?我正在尝试验证一个字符串,该字符串必须在开头或结尾至少包含一个数字 0-9,最多包含 3 个字符 (AZ) 并包括空格。我试过了:
^[0-9]{1,}\s*\w{0,3}|\w{0,3}\s*[0-9]{1,}
但是上面的 RegEx 匹配包含这些字符的所有内容。但我想确保它只有在我的字符串中不超过所需的字符和数字时才匹配。
应该返回真:
- 9个
- 99244aa
- ABC 321
- 9A
应该返回假:
- 第9999章
- 9嘟嘟嘟
- Hdjdjso DJ 99
如果有人能给我一个提示,我将不胜感激。
解决方案
有几件事:
您只是在锚定
^
第一个替代方案。$
如果你想断言整个字符串,你可能也应该使用它。否则,第二种
|\w{0,3}\s*
选择可能会匹配任何地方(并且也会真正匹配一个空字符串)\d+
此外,使用而不是使其更具可读性[0-9]{1,}
但更严格 for
[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
推荐阅读
- arrays - 比较两个数组并将匹配的字符串添加到另一个数组
- javascript - 为什么 fft-js 没有给出 fs/2 的频率区间
- asp.net-core - 如何在 Entity Framework Core 3.0 中按周分组?
- python - 如何在点击 QPushButton 时采取行动
- c# - SmtpClient 邮件正文的纯文本版本缺少撇号
- ruby - 将函数返回的元组传递给其他函数
- ruby-on-rails - 经常因延迟工作而发生民意调查
- function - Julia 创建一个函数的多个稍作修改的版本
- node.js - 当从 url 调用 router.post 方法时,在 express.js 中找不到错误 404
- python - tkinter 的几何小部件上的无效语法