我有一个论坛网站,我目前正在处理最后一块,注册表单,我想验证用户名。它应该只包含阿拉伯语和英语字母数字,并且单词之间最多只能有一个空格。
我有英文字母数字部分工作,但不是阿拉伯语,也不是双重空格。
我使用preg_match()
函数将用户名输入与RegEX匹配。
我现在有什么:
!preg_match('/\p{Arabic}/', $username) && !preg_match('/^[A-Za-z0-9]$/')
//this is currently inside and if statement, so if they both don't match then it is false.
答案 0 :(得分:2)
您应该将unicode属性放在常规正则表达式中,因为这可以通过1个正则表达式完成。您还需要量化该字符类,否则您只允许1个字符。这个正则表达式应该这样做。
^[\p{Arabic}a-zA-Z\p{N}]+\h?[\p{N}\p{Arabic}a-zA-Z]*$
在PHP中使用u
修饰符,以便unicode按预期工作。
PHP用法:
preg_match('/^[\p{Arabic}a-zA-Z\p{N}]+\h?[\p{N}\p{Arabic}a-zA-Z]*$/u', $string);