Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式匹配阿拉伯语/英语字母数字_Php_Regex - Fatal编程技术网

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。如果不是,他必须使用我的第二种解决方案。