我想知道以下内容的等价物,但仅限于阿拉伯字母:
$regex = '[A-Za-z0-9-[']_+ ]+'
我试过了:
$regex = '[ا-ئ0-9 ]+';
其中第一个阿拉伯字母ا
和最后一个字母CCD_。然而,我得到了以下错误:
[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
您可以检查您的Regex风味是否支持'p{Arabic}
或'p{InArabic}
尝试:
$regex = '['p{Arabic}'d-'[']_+ ]+'
您可以通过查看并简要阅读以下内容来开始找到自己问题的答案:
- 正则表达式教程
- Unicode正则表达式
等效的正则表达式如下:
~['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}[']_+ -]+
注意:更常见的情况是,在字符类中发现连字符-
放在第一位或最后一位,或者选择对其进行转义。