我想知道以下内容,但仅限阿拉伯字母:
$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
答案 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}[\]_+ -]+
注意:更常见的是在字符类中首先或最后放置连字符-
,或选择将其转义。