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