PHP-将ereg转换为preg_匹配
我有一个脚本,我已经用了很长一段时间来验证英国邮政编码,问题是函数的一部分使用了PHP-将ereg转换为preg_匹配,php,regex,Php,Regex,我有一个脚本,我已经用了很长一段时间来验证英国邮政编码,问题是函数的一部分使用了ereg,而不是preg\u match 请有人用下面的句子给我指一下正确的方向好吗?我添加了分隔符,但没有得到与以前相同的结果 $alpha1 = "[abcdefghijklmnoprstuwyz]"; $alpha2 = "[abcdefghklmnopqrstuvwxy]"; $alpha3 = "[abcdefghjkstuw]"; $alpha4 = "[abehmnprvwxy]"; $alpha5 =
ereg
,而不是preg\u match
请有人用下面的句子给我指一下正确的方向好吗?我添加了分隔符,但没有得到与以前相同的结果
$alpha1 = "[abcdefghijklmnoprstuwyz]";
$alpha2 = "[abcdefghklmnopqrstuvwxy]";
$alpha3 = "[abcdefghjkstuw]";
$alpha4 = "[abehmnprvwxy]";
$alpha5 = "[abdefghjlnpqrstuwxyz]";
// Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
$pcexp[0] = '/^(' . $alpha1 . '{1}' . $alpha2 . '{0,1}[0-9]{1,2})([0-9]{1}' . $alpha5 . '{2})$/';
// Expression for postcodes: ANA NAA
$pcexp[1] = '/^(' . $alpha1 . '{1}[0-9]{1}' . $alpha3 . '{1})([0-9]{1}' . $alpha5 . '{2})$/';
// Expression for postcodes: AANA NAA
$pcexp[2] = '/^(' . $alpha1 . '{1}' . $alpha2 . '[0-9]{1}' . $alpha4 . ')([0-9]{1}' . $alpha5 . '{2})$/';
// Exception for the special postcode GIR 0AA
$pcexp[3] = '/^(gir)(0aa)$/';
// Standard BFPO numbers
$pcexp[4] = '/^(bfpo)([0-9]{1,4})$/';
// c/o BFPO numbers
$pcexp[5] = '/^(bfpo)(c\/o[0-9]{1,3})$/';
乍一看,一切正常,但您需要在结束分隔符后添加一个
i
,使正则表达式不区分大小写:
$pcexp[4] = '/^(bfpo)([0-9]{1,4})$/i';
等等
您的正则表达式不允许邮政编码部分之间存在空格。这是故意的吗?如果没有,请在空格合法的地方添加一个\s*
另外,您可以删除
{1}
的所有实例,并将每个{0,1}
替换为?
乍一看,一切看起来都正常,但您需要在结束分隔符后添加一个i
,使正则表达式不区分大小写:
$pcexp[4] = '/^(bfpo)([0-9]{1,4})$/i';
等等
您的正则表达式不允许邮政编码部分之间存在空格。这是故意的吗?如果没有,请在空格合法的地方添加一个\s*
此外,您可以删除
{1}
的所有实例,并将每个{0,1}
替换为?
此特定代码可能存在重复,而不是一般情况。我曾试图自己修复它,这似乎与Tim Pietzcker的一些输入一起工作。可能的重复是针对这个特定的代码,而不是一般的代码。我试着自己修复它,这似乎与Tim PietzckerHi Tim的一些意见有关,谢谢。在检查之前,将从字符串中删除空格。你能告诉我当将{0,1}
更改为?
并删除{1}
时会发生什么吗?没有任何变化<代码>?表示零或一,而{1}
只是多余的。非常感谢您的帮助:)嗨,蒂姆,谢谢。在检查之前,将从字符串中删除空格。你能告诉我当将{0,1}
更改为?
并删除{1}
时会发生什么吗?没有任何变化?
表示零或一,而{1}
只是多余的。非常感谢您的帮助:)