您可以在下面的代码中帮助您在用户名文本字段中进行验证。 仅允许使用中文单词,字母数字和特殊字符“_”和“ - ”。
添加了: 我正在尝试为用户名文本字段创建验证,允许使用中文单词,字母数字和& “ - ”& “_”。我试图找出如下的正则表达式,但它不能像我预期的那样工作。任何人都可以。
if (preg_match("/[~`!@#$%^&*()+={}\[\]|\\:;\"'<>,.?\/]/", "小明@ah meng"))
{
echo "invalid";
}
else
{
echo "valid";
}
答案 0 :(得分:2)
Han unification包含来自CJK的多个代码点。由于PCRE允许Unicode categories使用\p
令牌,因此您可以将大多数中文字符与\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
modifier。