正则表达式 - 仅匹配unicode字母而不是数字

时间:2014-11-09 09:50:40

标签: php regex validation unicode

我正在使用PHP,并试图编写一个正则表达式,匹配任何语言的任何字母,但不是数字。

我已尝试/\p{L}+/但它也匹配unicode字母和数字。我正在检查阿拉伯语和英语。英语数字没有通过,这是正常的,但阿拉伯数字通过这是不正常的。

是否有另一个正则表达式只匹配任何语言的字母?

1 个答案:

答案 0 :(得分:1)

正则表达式引擎需要知道目标字符串是一个unicode字符串(以避免解释错误)。要做到这一点,你可以使用u修饰符,它有两个函数:

  • 它将\w \d等经典速记字符类扩展为unicode字符(而不仅仅是ascii字符)
  • 强制将字符串视为unicode字符串

所以你可以使用:/\pL+/u

请注意,在您的特定情况下,不需要第一个行为,但您只能使用以下内容切换第二个行为:/(*UTF8)\pL+/(*UTF8)必须放在模式的最开头)