【发布时间】:2015-12-24 14:46:07
【问题描述】:
我是 Regex 的新手,目前正在用 PHP 开发一个网站。就我所学的正则表达式而言,我创建了以下正则表达式模式来匹配值。我创建了 2 个正则表达式来验证我的输入。
1) 第一个,我想创建一个正则表达式,它可以允许可选的子字符串not
456,88,not,398 //True
not,934,3094,not //true
not,389,383 //True
394,588,not //True
694,20,589 //True
493 //True
not //True
344,not, //False
,not //False
我创建了以下正则表达式
/^\d*(,?not,?)*(,\d+)*$/
但这失败了
not,934,3094,not //<--Fails
389,not, //<--It returns true while I want it false
,not, //<--It returns true while it should be false
对于上述要求,什么是好的正则表达式?
2) 第二个,我创建了一个正则表达式来验证以下字符串
983,9,4|499,5,3|123,8,8 //true
983,9,4 //true
我的正则表达式在第一个上运行良好,但在第二个上却失败了
/^(((\d+,)*\d+)\|((\d+,)*\d+))*$/
【问题讨论】:
-
你的正则表达式只允许一个
not。 -
我不认为正则表达式是最好的方法。使用
explode()以逗号分隔字符串,然后查看该数组的元素是否符合您的规则。 -
@Barmar 是的,而且我提到的许多其他字符串也失败了
-
@Barmar 可能是,但随后我将不得不分解并循环遍历每个数组项并检查它是否正常。