Php 使用正则表达式匹配阿拉伯语/英语字母数字
我希望有一个正则表达式匹配:Php 使用正则表达式匹配阿拉伯语/英语字母数字,php,regex,Php,Regex,我希望有一个正则表达式匹配: 阿拉伯文字母 列表项 英语字母数字 最多3个空间 4表示最大值 任何命令 我尝试了不同的解决方案,但解决不了 以下是我现在拥有的: preg_match('@^([^\W_]*\s){0,3}[^\W_]*$@', $username) 上述表达式允许: 最多3个空间 英国羊驼 不允许下划线 您可以检查您的正则表达式风格是否支持此\p{Arabic}或\p{InArabic} 还可以尝试使用mb_ereg_match()函数: 如果这不起作用,那么除了将所
- 阿拉伯文字母
- 列表项
- 英语字母数字
- 最多3个空间
- 4表示最大值
我尝试了不同的解决方案,但解决不了 以下是我现在拥有的:
preg_match('@^([^\W_]*\s){0,3}[^\W_]*$@', $username)
上述表达式允许:
- 最多3个空间
- 英国羊驼
- 不允许下划线
\p{Arabic}
或\p{InArabic}
还可以尝试使用mb_ereg_match()函数:
如果这不起作用,那么除了将所有阿拉伯字符显式写入表达式之外,别无选择。凌乱的,但工作
因为您使用的是php,所以可以首先将所有阿拉伯字符列成一个字符串变量,然后将该变量添加到regex中,以便于代码管理。我不知道阿拉伯字符,但下面的regexp应该与其他字符匹配
([a-zA-Z0-9]{1,})\s{0,3}_{0,4}
这将匹配
(字母数字)(0-3空格)(0-4下划线)
如果有超过4个下划线,最后一个将被忽略
如果有3个以上的空间,则将忽略3个空间之后的零件
编辑:
对于阿拉伯字母:首先声明一个包含所有阿拉伯字母的字符串
所以你会有
$arabic='all_arabic_letters';
那么您的regexp字符串将是
$regex='[' . $arabic . ']{1,}([a-zA-Z0-9]{1,})\s{0,3}_{0,4}';
并将其匹配如下:
preg_match($regex, $username);
阿拉伯文字母-我明白你的意思吗?你是说这样的人:以任何顺序?“a_o_e_u”可以吗?“a_o_h_t_”不可以吗?“a_o_e_i d”不可以吗?还是应该先是字母,然后是空格,然后是下划线?可能是重复的,他可以看这里:是的。如果他的正则表达式(版本)支持unicode。如果不是,他必须使用我的第二种解决方案。