PHP验证:地址和邮政编码的第一行
我想用PHP做一些验证(一个邮政地址) 例如,验证地址和邮政编码的第一行:PHP验证:地址和邮政编码的第一行,php,validation,Php,Validation,我想用PHP做一些验证(一个邮政地址) 例如,验证地址和邮政编码的第一行: 123 Some Road 及 这两个字段都有数字、字母和空格 我尝试了几种正则表达式模式,但它不接受空格,这就是我需要帮助的地方 以下是我目前使用的代码: $address1CheckPattern = '/^[a-z0-9-]+$/'; $adress1HasError = !preg_match($address1CheckPattern, $address1); 只需将空格放在方括号中,即可在可接受的字符中
123 Some Road
及
这两个字段都有数字、字母和空格
我尝试了几种正则表达式模式,但它不接受空格,这就是我需要帮助的地方
以下是我目前使用的代码:
$address1CheckPattern = '/^[a-z0-9-]+$/';
$adress1HasError = !preg_match($address1CheckPattern, $address1);
只需将空格放在方括号中,即可在可接受的字符中包含空格。所以看起来是这样的:
$add_check = '/^[a-zA-Z0-9- ]+$/';
$add_check = '/^[a-zA-Z0-9-. ]+$/';
us=/.../
uk=/.../
nl=/.../
ge=/.../
这就是你要找的吗
请注意,我还在正则表达式中添加了“A-Z”范围:您可能希望允许地址包含大写字母,除非您已经将地址缩减为所有小写或其他形式
我还建议在character类中添加一个点,因为“st.”和“ave.”等缩写可能会出现。那么它看起来是这样的:
$add_check = '/^[a-zA-Z0-9- ]+$/';
$add_check = '/^[a-zA-Z0-9-. ]+$/';
us=/.../
uk=/.../
nl=/.../
ge=/.../
只需将空格放在方括号中,即可在可接受的字符中包含空格。所以看起来是这样的:
$add_check = '/^[a-zA-Z0-9- ]+$/';
$add_check = '/^[a-zA-Z0-9-. ]+$/';
us=/.../
uk=/.../
nl=/.../
ge=/.../
这就是你要找的吗
请注意,我还在正则表达式中添加了“A-Z”范围:您可能希望允许地址包含大写字母,除非您已经将地址缩减为所有小写或其他形式
我还建议在character类中添加一个点,因为“st.”和“ave.”等缩写可能会出现。那么它看起来是这样的:
$add_check = '/^[a-zA-Z0-9- ]+$/';
$add_check = '/^[a-zA-Z0-9-. ]+$/';
us=/.../
uk=/.../
nl=/.../
ge=/.../
这在一般情况下有效。但并非所有地址行1都有编号,有些地址行只有名称。例如房屋名称、街道名称 如果你对你的正则表达式很满意,你只是想让它接受一个空格。在正则表达式中添加一个空格
$add_check = '/^[a-z0-9- ]+$/i';
但这仍然不是匹配地址的好方法。使用从英国皇家邮政获得真实数据的公共API将是最好的。谷歌API(免费但收费有限)或像Postcode anywhere这样的付费服务对您来说会更好,这在一般情况下是有效的。但并非所有地址行1都有编号,有些地址行只有名称。例如房屋名称、街道名称 如果你对你的正则表达式很满意,你只是想让它接受一个空格。在正则表达式中添加一个空格
$add_check = '/^[a-z0-9- ]+$/i';
但这仍然不是匹配地址的好方法。使用从英国皇家邮政获得真实数据的公共API将是最好的。谷歌API(免费但收费有限)或付费服务(如Postcode anywhere)对您来说会更好您的正则表达式只包含字母和数字,不提供检查空间或标签 试着遵循正则表达式的工作原理
$add_check = '/^\s*[a-z0-9\s]+$/i';
if(!preg_match($add_check,$address1)) {
$error_message .= '&add1=Please enter a valid Address Line 1.';
}
您的正则表达式只包含字母和数字,没有检查空格或制表符的规定 试着遵循正则表达式的工作原理
$add_check = '/^\s*[a-z0-9\s]+$/i';
if(!preg_match($add_check,$address1)) {
$error_message .= '&add1=Please enter a valid Address Line 1.';
}
地址线上的特殊字符呢 在德国,街道名称中通常有一个“-”,或者德语中的“街道”一词用“str”删去,因此在一行中有一个点。当我必须在工作中处理德语地址时,我必须处理诸如“NW 10 Straße 39b”、“Elsa Brandström-Str 128 Haus 3”等行 邮政编码也一样。在德国,我们有5个数字字符-简单,但其他国家也有字母数字字符,如您的示例“W3 1TJ”,等等
所以我要声明,地址行没有常规验证。地址行中的特殊字符如何 在德国,街道名称中通常有一个“-”,或者德语中的“街道”一词用“str”删去,因此在一行中有一个点。当我必须在工作中处理德语地址时,我必须处理诸如“NW 10 Straße 39b”、“Elsa Brandström-Str 128 Haus 3”等行 邮政编码也一样。在德国,我们有5个数字字符-简单,但其他国家也有字母数字字符,如您的示例“W3 1TJ”,等等
所以我想说,地址行没有一般的验证。我逐字逐句地回答了这个问题,如果一个地址有一个门牌号,一个空格,然后是一个路名
//address first line [1 pass 3 fails]
$add_check = '/[0-9] [a-zA-Z]/';
echo preg_match($add_check,"123 Some Road");
echo preg_match($add_check,"Some Road");
echo preg_match($add_check,"123Some Road");
echo preg_match($add_check,"2ND Road");
邮政编码有一些字母,一些数字和空格,一些数字,最后还有更多的字母
//UK type postal code [1 pass 3 fails]
$add_check = '/[a-zA-Z][0-9] [0-9][a-zA-Z]/';
echo preg_match($add_check,"W3 1TJ");
echo preg_match($add_check,"W 1TJ");
echo preg_match($add_check,"W3 1");
echo preg_match($add_check,"3 1TJ");
当然,如果我不是住在“路一号”,而是住在“我的房子,路一号”。
哎哟,那个逗号怎么办,数字怎么了。现在可能是将validateAddressLine($address)放入函数中的好时机,以便以后可以对其进行改进。并在每次为false时保存一条日志消息,然后您可以检查是否阻止了某些您不期望的格式。[这也意味着你不应该对html验证太严格,让服务器检查并记录它。]我逐字逐句地回答了这个问题,如果一个地址有门牌号、空格、道路名称
//address first line [1 pass 3 fails]
$add_check = '/[0-9] [a-zA-Z]/';
echo preg_match($add_check,"123 Some Road");
echo preg_match($add_check,"Some Road");
echo preg_match($add_check,"123Some Road");
echo preg_match($add_check,"2ND Road");
邮政编码有一些字母,一些数字和空格,一些数字,最后还有更多的字母
//UK type postal code [1 pass 3 fails]
$add_check = '/[a-zA-Z][0-9] [0-9][a-zA-Z]/';
echo preg_match($add_check,"W3 1TJ");
echo preg_match($add_check,"W 1TJ");
echo preg_match($add_check,"W3 1");
echo preg_match($add_check,"3 1TJ");
当然,如果我不是住在“路一号”,而是住在“我的房子,路一号”。
哎哟,那个逗号怎么办,数字怎么了。现在可能是将validateAddressLine($address)放入函数中的好时机,以便以后可以对其进行改进。并在每次为false时保存一条日志消息,然后您可以检查是否阻止了某些您不期望的格式。[这也意味着你不应该对html验证要求太严格,让服务器检查并记录它。]不完全回答这个问题,但我曾经有过验证邮政编码的任务 为此,我建立了以下正则表达式;希望有帮助 正如一些人在我之前所说的,没有办法验证某个国家的每个地址,更不用说在这个星球上了!它必须是一个通用文本字段,可能只需检查您不需要的字符:“?=;@$%^*!”并清理输入以避免SQL注入 在我的应用程序中,邮政编码是根据国家/地区字段进行测试的,但如果您知道您将只测试选定的几个字段,则可以将一些字段组合在一起 例如:美国/英国=
/^([\d]{5}([\d]{4}))|([A-Z]?[A-Z][0-9][A-Z0-9]?\s[0-9][A-Z]{2})/
不完全回答这个问题,但我曾经有过验证邮政编码的任务 我建立了以下re