长时间的倾听者.第一次来电...
不是严格意义上的PHP问题,因为它涉及正则表达式,但这个让我撕裂我的头发.
我有3个正则表达式,我想创建,只有一个正常工作.
现在我不确定这是否是由于以下事实:
无论哪种方式,这些表达方式和我使它们工作的微弱尝试.
1)匹配以2,3,4或5开头,然后是5位数的任何数字.(这个我认为有效)
码:
if (!ereg('/[2-5]\d{5}/', $_POST['packageNumber' )
{
echo "The package number is not the correct format.";
}
Run Code Online (Sandbox Code Playgroud)
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.";
}
Run Code Online (Sandbox Code Playgroud)
3)匹配字母数字,空格,句号和超量的任意组合,最多50个字符.
if (!ereg("/[0-9a-zA-Z\s\-\.]{0,50}/", $_POST['customerNumber' )
{
echo "The customer number is not the correct format.";
}
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我我做错了什么我会给他们我的第一个出生.
您正在混合PCRE函数和POSIX正则表达式函数.您正在使用具有POSIX正则表达式函数的Perl兼容正则表达式.
所以替换ereg为preg_match它应该工作:
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}\.[1-2]$/", $_POST['packageModifier'])) {
echo "The package modifier is not the correct format.";
}
if (!preg_match("/^[0-9a-zA-Z\s\-.]{0,50}$/", $_POST['customerNumber'])) {
echo "The customer number is not the correct format.";
}
Run Code Online (Sandbox Code Playgroud)
除了修复PHP语法错误,我还为要匹配的字符串的start(^)和end($)添加了锚点.