hi可以帮助在下面的代码做验证在用户名文本字段。只允许中文单词、字母、数字和特殊字符"_"answers"-"。
补充道:我试图创建一个验证用户名文本字段,允许中文单词,字母数字&"-","_"。我试图找出下面的正则表达式,但它不像我预期的那样工作。任何人都可以帮忙。
if (preg_match("/[~`!@#$%^&*()+={}'[']|'':;'"'<>,.?'/]/", "小明@ah meng"))
{
echo "invalid";
}
else
{
echo "valid";
}
汉统一从CJK中理解了多个代码点。由于PCRE允许使用'p
标记的Unicode分类,因此您可以使用'p{Han}
匹配大多数中文字符。
代码:
<?php
$str = "小明ahmeng";
$regex = '/^[-_A-Za-z0-9'p{Han}]+$/u'; // notice spaces are not included
if (preg_match( $regex, $str)) {
echo "valid";
} else {
echo "invalid";
}
?>
演示另外,当您使用UTF-8编码的字符串时,不要忘记设置/u
修饰符。