正则表达式模式允许使用UTF-8的外语字符

时间:2015-09-16 14:22:26

标签: php regex utf-8 pattern-matching

我在PHP脚本中使用了以下模式:

define("PATTERN", "|^['0-9a-zA-Z\\\/\[\]\(\)\=\>\,\'\~\-\^\@\$\%\*\&\?\:\;\_\.\€\+\|\^\@\%\s" . '"' . "]{0,50}$|");

我正在尝试使用\p{L}选项允许其他语言中的重音字符,但任何字符串仍然无法使用该模式。

define("PATTERN", "|^['0-9\p{L}\\\/\[\]\(\)\=\>\,\'\~\-\^\@\$\%\*\&\?\:\;\_\.\€\+\|\^\@\%\s" . '"' . "]{0,50}$|");

我使用的任何在线正则表达式测试程序都说明了以下内容:

  

没有提取匹配组。

     

这意味着您的模式匹配,但其中没有(捕获(组))与主题字符串中的任何内容匹配。

在线示例:https://regex101.com/r/nV4yC5/1

有没有办法允许使用UTF-8的外语字符?

1 个答案:

答案 0 :(得分:1)

试试这个:

|^['0-9\p{L}\\\/\[\]\(\)\=\>\,\'\~\-\^\@\$\%\*\&\?\:\;\_\.\€\+\|\^\@\%\s" . '"' . "]{0,50}$|u