我用正则表达式给出的格式地址PHP正则表达式格式的地址
$address='2/12, 1st street, ch-90';
(preg_match('/^[a-zA-Z0-9\s #,-.]+$/i', $address))
PLS建议我加入pregmatch的forward slash
它匹配上述地址。由于
我用正则表达式给出的格式地址PHP正则表达式格式的地址
$address='2/12, 1st street, ch-90';
(preg_match('/^[a-zA-Z0-9\s #,-.]+$/i', $address))
PLS建议我加入pregmatch的forward slash
它匹配上述地址。由于
试试这个希望这将帮助你......
您应该添加\/
到字符类匹配/
,你必须在字符类的末尾添加-
。
<?php
ini_set('display_errors', 1);
$address='2/12, 1st street, ch-90';
preg_match('/^[a-zA-Z0-9\/\s #,.-]+$/i', $address,$matches);
print_r($matches);
输出:
Array
(
[0] => 2/12, 1st street, ch-90
)
谢谢。它适用于我 – pabha
@pabha欢迎.... :) –
我想提供一些正则表达式的建议,一些邮政地址使用注意事项,以及一些输出忠告:
模式建议:
如果你要使用i
标志哟结束UR模式表达式,那么你就需要在你的角色列表中输入了两个a-z
和A-Z
- 只需选择一个范围。
除非你期待任何\r
\n
\t
\f
\v
空格字符,你应该只使用在你的角色列表中的空间()。
我会假设你已经认为你会在你的项目,并通过添加一个转义斜杠(\/
),你将至少能够从preg_match()
返回true
结果您输入的字符串遇到可能的符号( $address
)。
邮政地址使用注意事项:
处理地址字符串可以变成一个真正的兔子洞。要做的最好的事情是建立一些严格的指导方针(如果您有权这样做),这会限制存在于有效地址中的格式和字符。如果您无法控制输入字符串,那么您可能需要扩展正则表达式以包含更多符号。根据项目的深度和复杂程度,这个主题将需要不同的研究。
1.4.3建议:
如果你只是想要一个合格与否的条件,不preg_match()
声明第三个参数:如果要找出失败的字符
$address='2/12", 1st street, @ch-90'; // <-- I added invalid symbols to your string
if(preg_match('/^[a-z\d \/#,.-]+$/i',$address)){
echo "Address is valid";
// do whatever is next and use unchanged $address
}else{
echo "Address contains invalid character(s)"; // <-- this one will be shown
// do whatever is next and use unchanged $address
}
(S ),使用preg_match_all()
,更改模式,并声明第三个参数。这可以提供更好的用户体验,因为您正在解释导致地址值无效的原因。也就是说,如果您使用这种模式来保护您的网站免受恶意攻击,那么当然,您不希望提供这些线索。这是preg_match_all()
方法:
if(preg_match_all('/[^a-z\d \/#,.-]/',$address,$m)){
echo "Address deemed invalid because of: ",implode("",$m[0]); // or however you want to display it
// do whatever is next
}else{
echo "Address is valid";
// do whatever is next
}
有两种方法是可能的:1)选择其他模式分隔符2)使用反斜杠转义斜线。请注意,您还应该在字符类中跳过连字符,因为它定义了逗号和点之间的范围(但实际上这不是问题,因为逗号,连字符和点在ascii表中是连续的) –