正则表达式,允许使用任何语言的字母(如"ñ")

use*_*607 5 php regex unicode internationalization

试图让用户使用其他语言的特殊字符,如西班牙语或法语.我原来有这个:

 "/[^A-Za-z0-9\.\_\- ]/i" 
Run Code Online (Sandbox Code Playgroud)

然后将其更改为

 "/[^\p{L}\p{N}\.\_\-\(\) ]/i" 
Run Code Online (Sandbox Code Playgroud)

但仍然无法正常工作.应允许使用诸如"ñ"之类的字母.谢谢.

修订:我发现在开头添加(*UTF8)有助于解决问题.所以我使用以下代码:"/(*UTF8)[^\p {L} A-Za-z0-9 ._-]/i"

修订:看完答案后我决定使用:"/ [^\p {Xwd}. - ]/u".谢谢(它甚至与中文字母一起使用.

Cas*_*yte 5

对于拉丁语言,您可以使用\p{Latin}字符类:

/[^\p{Latin}0-9._ -]/u
Run Code Online (Sandbox Code Playgroud)

但如果您想要所有其他字母和数字:

/[^\p{Xwd}. -]/u
Run Code Online (Sandbox Code Playgroud)

“u”修饰符指示该字符串必须作为 unicode 字符串读取。