长时间的听众。第一次来电...
由于涉及正则表达式,这并不是严格意义上的PHP问题,但是这个问题使我无法理解。
我要创建3个正则表达式,但只有一个能正常工作。
现在我不确定这是否是由于以下事实:
我不明白preg_match和
ereg和他们的返回码如我
大约有7年没有在PHP中工作过
年份。
我的正则表达式是
完全是错误的。
我是智障者。
无论哪种方式,都是表达方式和我为使它们发挥作用而做出的微弱尝试。
1)匹配任意数字,以2,3,4或5开头,然后是5位数字。 (我认为这是可行的)
码:
if (!ereg('/[2-5]\d{5}/', $_POST['packageNumber' )
{
echo "The package number is not the correct format.";
}
2)匹配任何以2、3、4或5开头的数字,然后是5位数字,然后是句点,然后是1或2。
if (!ereg("/[2-5]\d{5}\.[1-2]/", $_POST['packageModifier' )
{
echo "The package modifier is not the correct format.";
}
3)匹配字母数字,空格,句号和连字符的任意组合,最多50个字符。
if (!ereg("/[0-9a-zA-Z\s\-\.]{0,50}/", $_POST['customerNumber' )
{
echo "The customer number is not the correct format.";
}
如果有人可以告诉我我做错了什么,我会给他们我的长子。
最佳答案
我假设您只是错过了$ _POSTS上的结尾[],并且为行的开头和结尾添加了锚,并使用了preg_match。
如果您不锚定它,并且该模式在字符串中的任何位置都匹配,那么整个对象都将匹配。例如。
如果第一个未锚定,则将匹配“ dfasfasfasfasf25555555as5f15sdsdasdsfghfsgihfughd54”。
第一
if (!preg_match('/^[2-5]\d{5}$/', $_POST['packageNumber'])) {
echo "The package number is not the correct format.";
}
第二
if (!preg_match('/^[2-5]\d{5}\.[2-5]$/', $_POST['packageModifier'])) {
echo "The package modifier is not the correct format.";
}
第三
if (!preg_match('/^[0-9a-zA-Z\s\-.]{0,50}$/m', $_POST['customerNumber'])) {
echo "The package modifier is not the correct format.";
}