回答
问题是|
具有比^
和$
的优先级低,所以你的图案意味着^[1-9]
或0[1-9]
或1[0-9]
或2[0]$
:仅个位数的值由^
限制,只20
被限制通过$
。
您可以重复^
和$
在交替的每一个分支,否则包裹交替在(?:...)
创建一个非捕获子表达式:
/^[1-9]$|^0[1-9]$|^1[0-9]$|^20$/
/^(?:[1-9]|0[1-9]|1[0-9]|20)$/
(我也采取了改变的自由[0]
至0
。)
试试这个
/^([01]?\d|20)$/
0或后面至少一个数字1(另购)或20
这将允许00.应该禁止吗? –
如果00不被允许/ ^(0 [1-9] | 1 \ d | 20)$/ –
感谢它现在的作品。 –
如何
/^([0-1]?[0-9]|20)$/
的问题是,20是一个特例。第二部分涵盖它。第一部分涵盖其余部分。我假设Perl风格的正则表达式,因为你没有指定上下文。
你能告诉我我的代码有什么问题吗?我今天早上自己学了一个正则表达式。 –
正如ruakh在他的回答中指出的那样,这是一个优先事项 - 为了确保'^'和'$'符号的优先级低于表达式的其余部分,您需要将块加括号。 –
- 1. 正则表达式只允许字符
- 2. 正则表达式只允许负数
- 3. 正则表达式只允许在
- 4. 正则表达式只允许数字,逗号和破折号
- 5. 正则表达式允许从范围选择不工作
- 6. 正则表达式允许范围内的数字,或空
- 7. ASP.NET正则表达式编号范围
- 8. 正则表达式编号范围
- 9. 允许正则表达式
- 10. jQuery正则表达式只允许货币符号和数字
- 11. PHP - 正则表达式只允许数字和符号
- 12. 正则表达式:允许字母和逗号之间只有
- 13. 只允许破折号和数字的正则表达式?
- 14. javascript的正则表达式,只允许数字和逗号
- 15. 只允许AI 0-9和符号$#(正则表达式)
- 16. 正则表达式 - 匹配号码范围,周围有没有号码
- 17. 正则表达式以允许逗号分隔码
- 18. 正则表达式 - 允许里面的电话号码
- 19. 正则表达式的密码不允许\符号
- 20. 正则表达式,允许只有20个字符的电话号码
- 21. 正则表达式为不同的号码范围
- 22. 正则表达式:根据不同的号码范围
- 23. 正则表达式或OR两个范围正则表达式
- 24. 正则表达式只允许字母,空格和 - 只有
- 25. 正则表达式不允许单引号和双引号
- 26. 换号只允许1逗号和小数点正则表达式
- 27. 正则表达式,只允许20以上的正整数
- 28. 只允许字母和正斜杠的正则表达式
- 29. 正则表达式只允许这种格式123-456-7890
- 30. 正则表达式,只允许specfic格式。 “John-doe”
它帮助我今天...谢谢:) – AbdulAziz
@AbdulAziz:不客气! :-) – ruakh