我认为这只发生在我写正则表达式时。我有一个简单的正则表达式来验证一组分页号码,以后将提交给数据库,像5
,10
,25
,50
,100
,250
例如:Preg_match从一些数字中删除最后的零
/all|5|10|25|50|100|250/
当我进行测试,我的正则表达式以上削减0
仅限数字50,100和但不是从10
!!?
在线例如:
http://viper-7.com/IbKFKw
我在做什么错在这里?这次我错过了什么?
我认为这只发生在我写正则表达式时。我有一个简单的正则表达式来验证一组分页号码,以后将提交给数据库,像5
,10
,25
,50
,100
,250
例如:Preg_match从一些数字中删除最后的零
/all|5|10|25|50|100|250/
当我进行测试,我的正则表达式以上削减0
仅限数字50,100和但不是从10
!!?
在线例如:
http://viper-7.com/IbKFKw
我在做什么错在这里?这次我错过了什么?
这是因为在字符串50
中,正则表达式首先匹配5
,这是有效的。在字符串250
中,正则表达式首先匹配25
,这是有效的并在此处结束。
你可以尝试添加锚点:
/^(?:all|5|10|25|50|100|250)$/
这迫使正则表达式的整个字符串匹配,因此,返回你正在寻找正确的匹配。
它的作品,杰瑞!你是对的!简直不敢相信!你正在成为我的个人正则表达大师!非常感谢! –
@IliaRostovtsev这个名字的'杰里'xD谢谢你,但我认为我还有很长的路要走,成为一个正则表达大师^^ – Jerry
我修好了,对不起,杰里! –
从左到右尝试替代方案,因此匹配5
优先于50
。但没有1
从10
中切断0
。你可以简单地重新排序:
/all|250|100|50|25|10|5/
或者,选择添加0
到相关替代品(既然?
是贪婪的,在0
将如果存在匹配):
/all|50?|100?|250?/
或
/all|(?:5|10|25)0?/
如果这不是用于匹配,而是用于验证(即检查整个字符串),然后用杰里的s uggestion和使用锚,以确保周围有你的电话号码不希望的字符:
/^(?:all|5|10|25|50|100|250)$/
(当然里面(?:...)
你也可以使用任我上面的图案,但现在因为不完整的比赛是不允许的优先级是无关紧要的。 )
它的工作原理!你是对的!我不知道优先发生在这里! –
非常感谢您的正确答案,但最重要的是要有详细的解释和帮助学习!深深的尊重你们两个! –