中文,字母,数字,下划线,4-16个字符
/[\x4E00-\x9FA5\w]{4,16}/
\x4E00-\x9FA5 代表unicode的中文,不是全部,只是中日韩统一表意文字这个区间,想要更完善的 可以参考这里 http://thoughtfly.iteye.com/blog/977478
\w 涵盖了 字母、数字、下划线
转自https://segmentfault.com/q/1010000002994021
//如果用户名不匹配正则表达式,则结束脚本,并弹窗提示用户名不合法
// preg_match('/[]/',$subject)为基本格式
// /是正斜线,\是反斜线,反斜线代表转义
// /[\x4E00-\x9FA5\w{4,16}]/
// 以一条斜杠在前一条斜杠在后代表正则表达式开始
// \x4E00-\x9FA5代表unicode的中文,不是全部,只是中日韩统一表意文字这个区间
// \w涵盖了 字母、数字、下划线
// 如果正则表达式末尾]之前存在一个.代表字符形态的点,不是连接符,并且不需要转义
// preg_match('/[\x4E00-\x9FA5\w{4,16}]/', $subject)还可以写成如下的代码
// preg_match('/[\x4E00-\x9FA5a-zA-Z0-9\_]/',$subject) 没测试过,不知道对不对,应该对的。
if(!preg_match('/[\x4E00-\x9FA5\w{4,16}]/', $subject))
{
exit("<script>
alert('用户名不合法');
location.href='reg.php'
</script>")
}