我想要一个匹配的正则表达式:
任何订单。
我尝试了不同的解决方案但无法解决。
以下是我现在的情况:
preg_match('@^([^\W_]*\s){0,3}[^\W_]*$@', $username)
上述表达式允许:
答案 0 :(得分:3)
您可以检查您的正则表达式是否支持此\p{Arabic}
或\p{InArabic}
。
还尝试使用mb_ereg_match()函数:http://si2.php.net/manual/en/function.mb-ereg-match.php
如果这不起作用,除了将所有阿拉伯字符显式写入表达式之外别无选择。凌乱,但是做了工作。
由于您使用的是php,您可以先将所有阿拉伯字符列入字符串变量,然后将该变量添加到regex中,以实现代码可管理性。
答案 1 :(得分:0)
我不知道阿拉伯字符,但以下正则表达式应与其他字符匹配
([a-zA-Z0-9]{1,})\s{0,3}_{0,4}
这将匹配 (字母数字)(0-3空格)(0-4下划线)
如果有超过4个下划线,则最后一个将被省略 如果有超过3个空格,则忽略3个空格后的部分。
编辑: 对于阿拉伯字母:首先声明一个包含所有阿拉伯字母的字符串 所以你会有
$arabic='all_arabic_letters';
然后你的正则表达式字符串将是
$regex='[' . $arabic . ']{1,}([a-zA-Z0-9]{1,})\s{0,3}_{0,4}';
并按如下方式匹配:
preg_match($regex, $username);