阿拉伯语字母数字,只有空格正则表达式

时间:2014-04-18 22:41:32

标签: php regex arabic phpbb3

我想知道以下内容,但仅限阿拉伯字母:

$regex = '[A-Za-z0-9-[\]_+ ]+'

我试过了:

$regex = '[ا-ئ0-9 ]+';

其中第一个阿拉伯字母ا和最后一个ئ。但是,我有以下错误:

[phpBB Debug] PHP Warning: 
in file [ROOT]/includes/functions_user.php on line 1505: preg_match():
Compilation failed: range out of order in character class at offset 6

2 个答案:

答案 0 :(得分:5)

您可以检查您的正则表达式支持\p{Arabic}\p{InArabic}

尝试:

$regex = '[\p{Arabic}\d-\[\]_+ ]+'

答案 1 :(得分:3)

您可以通过查看并简要阅读以下内容来开始找到您自己问题的答案:

等效的正则表达式如下:

~[\p{Arabic}\d[\]_+ -]+~u

正则表达式

[\p{Arabic}\d[\]_+ -]+     any character of: UTF macro 'Arabic',
                           digits (0-9), '[', '\]', '_', '+', ' ', '-'
                           (1 or more times (matching the most amount possible))

通过将u修饰符添加到正则表达式的末尾,Pattern字符串被视为UTF-16,这也会导致转义序列与unicode字符匹配。

另外请注意,使用\p{N}它可以让您匹配任何脚本中的任何数字字符。

[\p{Arabic}\p{N}[\]_+ -]+

注意:更常见的是在字符类中首先或最后放置连字符-,或选择将其转义。