我想使用preg_match来匹配数字1 - 21.我怎样才能使用preg_match做到这一点?如果数字大于21,我不想匹配任何东西。PHP preg_match范围
example preg_match('([0-9][0-1]{0,2})', 'Johnathan 21');
我想使用preg_match来匹配数字1 - 21.我怎样才能使用preg_match做到这一点?如果数字大于21,我不想匹配任何东西。PHP preg_match范围
example preg_match('([0-9][0-1]{0,2})', 'Johnathan 21');
从comment above复制:
我建议匹配只是([0-9]{1,2})
(也许裹着\b
,基于输入格式)并过滤数值后来,在PHP代码中。请参阅Raymond Chen's thoughts on the subject。
谢谢。我用'\ d +'将数字匹配到数组中,然后我验证它是在1 - 21之间。 – James 2012-04-07 17:25:24
从字面上看:
preg_match('~ (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21)$~', 'Johnathan 21');
但也许这是更漂亮:
preg_match('~ ([1-9]|1[0-9]|2[01])$~', 'Johnathan 21');
我不认为你需要限制正则表达式的有效解决方案,其他方法(例如捕获正则表达式中的[[0-9] {1,2}'并且之后验证)可能更容易。 http://blogs.msdn.com/b/oldnewthing/archive/2006/05/22/603788.aspx – DCoder 2012-04-07 17:10:29
@二极管:这应该是一个答案。 – 2012-04-07 17:17:24
是的。我认为我会更简单地使用正则表达式。 – James 2012-04-07 17:21:26