我要做的是不允许两个连续的特殊字符,例如$ip = "202.142.178.220";
$ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));
//get ISO2 country code
if(property_exists($ipdat, 'geoplugin_countryCode')) {
echo $ipdat->geoplugin_countryCode;
}
//get country full name
if(property_exists($ipdat, 'geoplugin_countryName')) {
echo $ipdat->geoplugin_countryName;
}
或&*
或*$
,但它应该允许在&&
之类的字符串之间使用特殊字符。
到目前为止我尝试了什么:
Hello%Mr&
答案 0 :(得分:5)
^(?!.*[\%\/\\\&\?\,\'\;\:\!\-]{2}).*$
我们的想法是使用negative lookahead((?!)
)来验证字符串(.*
)中是否存在连续两个" special" 个字符([...]{2}
)。之后,您只需匹配整个字符串(.*
)。
答案 1 :(得分:0)
您可以使用这种模式:
\A\W?(?>\w+\W)*\w*\z
或
\A[%/\\&?,';:!-]?(?>[^%/\\&?,';:!-]+[%/\\&?,';:!-])*[^%/\\&?,';:!-]*\z
或
\A[^\p{L}\p{N}\s]?(?>[\p{L}\p{N}\s]+[^\p{L}\p{N}\s])*[\p{L}\p{N}\s]*\z
或
\A[^a-zA-Z0-9 ]?(?>[a-zA-Z0-9 ]+...
取决于你称之为“特殊角色”。