可能重复:
Regular expression where part of string must be number between 0-100
我想知道如何使用PHP上的正则表达式过滤一个必须只是数字的变量,从1到300。我该怎么办?
P.S。我真的找不到一本关于正则表达式的每个符号定义的好手册。例如,它是什么意思 / ^ 或 + $ / i ??
答案 0 :(得分:6)
([1-9][0-9]?|[12][0-9][0-9]|300)
换句话说,(|
)或者匹配1到9([1-9]
),10到99([1-9][0-9]?
),从100到299({{1 }),或300。
答案 1 :(得分:1)
不要这样做 - 这可能会变得过于复杂。只需从字符串中分出数字,将其转换为整数(如果您愿意)并检查其值:
function match( $n ) {
preg_match( '(\d+)', $n, $matches );
return $matches && $matches[ 0 ] >= 1 && $matches[ 0 ] <= 300;
}