2015-09-16 60 views
1

我有一個PHP腳本,盛大的作品下面的模式:正則表達式模式,允許外國語言文字使用UTF-8

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?

+0

你能告訴你的代碼不能匹配任何字符串? – anubhava

+2

在末尾添加'u'標誌('| u')。 –

+0

@anubhava對不起,字符串是'spółka' – llanato

回答

1

嘗試這樣的:

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