简单的PHP正则表达式

时间:2013-02-06 12:19:07

标签: php regex

晚上好,我正在学习PHP的正则表达式。我没有设法做1到30和1到10.对于1到9,我想[1-2-3-4-5-6-7-8-9]或[1-9] {1},哪个更正确?在此先感谢:)

3 个答案:

答案 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之间的数字,不带前导零