关于数字的正则表达式

时间:2012-12-11 22:41:17

标签: regex

这个正则表达式是否有效,以防我想包含最多31个数字?

'[^ 0-9> 31] +或它还会返回字母字符,我也必须以某种方式排除它们?

2 个答案:

答案 0 :(得分:3)

您的正则表达式接受一个或多个字符,每个字符都不是以下

之一
0 1 2 3 4 5 6 7 8 9 >

你想要的是:

/^(?:[0-9]|[12][0-9]|3[01])$/

答案 1 :(得分:1)

正则表达式不是文本的声波螺丝刀,能够神奇地做你想做的一切。正则表达式中没有任何内容可以检查数字的值。

你需要做的是两个步骤,用Perl编写。

$ok = ($s =~ /^\d{1,2}$/) && ($s < 31);

检查$s的值是否为字符串的开头(^),一个或两个数字(\d{1,2}),然后是字符串的结尾($ )。如果这是真的,那么它还会检查$s的数值是否小于31。

是的,您可以使用Ray Toal的答案中的复杂正则表达式:

/^(?:[0-9]|[12][0-9]|3[01])$/

但是可读性差得多。