晚上好,我正在学习 PHP 的正则表达式。我无法做到 1 到 30 和 1 到 10。对于 1 到 9,我认为 [1-2-3-4-5-6-7-8-9] 或 [1-9]{1},哪个更正确?提前致谢 :)
3 回答
对于 1 到 9,有一个直接的正则表达式,即[1-9]
.
对于 1 到 10 和 1 到 30,将应用规则组合。
对于 1 到 10,您可以使用:
10|[1-9]
对于 1 到 30,可以使用此正则表达式:
(30)|([12][0-9])|([1-9])
或者
(30)|([12]\d)|([1-9])
第一部分30
,将寻找完全匹配,即 30。
第二部分[12]\d
或[12][0-9]
,将寻找 10 到 29 之间的数字。
最后一部分[1-9]
将寻找 1-9 之间的数字。
以下是 0 到 9 之间单个数字的有效正则表达式模式:
[0123456789]
[0-9]
\d
以上都是等价的。
您建议的版本[1-2-3-4-5-6-7-8-9]
不正确。
要匹配 1 到 30 之间的数字,Regex 不是最好的工具,但如果您必须使用 regex,那么最简单的 regex 将是:
([012]?\d|30)
但请注意,这也将匹配0
,因此它实际上是 0-30 模式。
如果你真的想要 1-30,那就更复杂了:
([1-9]|[12]\d|30)
如果数字 1-30 是您要查找的整个字符串,那么不要忘记添加^
到模式的开头和$
结尾以锚定它,以便它拒绝包含 1-30 和其他字符的字符串.
我确实提到正则表达式是仅用于匹配数字的错误工具,不是吗?如果您可以避免为此使用正则表达式,那么它对您来说会简单得多。这只是一个案例if($var >= 1 && $var <= 30)
。
希望有帮助。
试试这个正则表达式:
30|[12]?\d
它将匹配 1 到 30 之间的数字,没有前导零