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


Arabic Alphanumeric with spaces only regex

我想知道以下内容的等价物,但仅限于阿拉伯字母:

$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}[']_+ -]+

注意:更常见的情况是,在字符类中发现连字符-放在第一位或最后一位,或者选择对其进行转义。