在字符串中搜索重复的阿拉伯语(印地语)数字

时间:2014-09-13 16:02:03

标签: php regex unicode arabic

我正在尝试确定给定的字符串是否包含超过4个连续的阿拉伯语(印地语)数字。具体而言,阿拉伯语(印地语)数字是:

١ ٢ ٣ ٤  ٥ ٦ ٧ ٨ ٩

是unicode 661到669

我试过了:

if (preg_match("/\b(?:(?:١|٢|٣|٤|٥|٦|٧|٨|٩)\b\s*?){4}/", $str, $matches) > 0) 
        return true;

但它根本不起作用(总是返回false)。

2 个答案:

答案 0 :(得分:5)

您可以尝试以下正则表达式。 \p{N}匹配任何脚本中的任何数字字符。

preg_match('~(?:\p{N}\s?){4,}~u', $str, $matches)

如果您只想匹配specific characters,请改用以下内容。

preg_match('~(?:[\x{0660}-\x{0669}]\s?){4,}~u, $str, $matches)

答案 1 :(得分:2)

使用字符类并量化它。看到这个正则表达式:

/[١٢٣٤٥٦٧٨٩]{4,}/

您的字符不是单词字符,因此\b会在匹配前面/后面声明一个单词字符,将其删除。

这是regex demo

请注意,如果您匹配的超过 4个字符,请改用{5,}