php - 允许来自任何语言的字母(如 "ñ")的正则表达式

标签 php regex unicode internationalization

尝试让用户使用其他语言(例如西类牙语或法语)中的特殊字符。我最初有这个:

 "/[^A-Za-z0-9\.\_\- ]/i" 

然后改成

 "/[^\p{L}\p{N}\.\_\-\(\) ]/i" 

但还是不行。应允许使用诸如“ñ”之类的字母。谢谢。

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

修订: 查看答案后,我决定使用:“/[^\p{Xwd}.-]/u”。谢谢(它甚至适用于中文字母表。

最佳答案

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

/[^\p{Latin}0-9._ -]/u

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

/[^\p{Xwd}. -]/u

“u”修饰符表示字符串必须被读取为 unicode 字符串。

关于php - 允许来自任何语言的字母(如 "ñ")的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22052517/

相关文章:

python - 拆分文本而不删除分隔符

javascript - 正则表达式 - 至少 1 个数字、1 个字母、1 个特殊字符和至少 3 个字符

windows - 如何在 cmd.exe 默认情况下制作 Unicode 字符集?

php - 使用ajax jquery和php过滤记录

php - MySQL认证错误: "Access denied for user ' xxx' @'yyy' "?的原因

php - 加载 xml 文件而不是下载

python - UnicodeEncodeError : 'ascii' codec can't encode character u'\u2026'

PHP PDO 默默地不插入

python - 文件名有空格的 Pyspark 错误处理

java - FontFactory (lowagie),Java,尝试使用 UniJIS-UCS2-H(日语)时出现 UnsupportedEncodingException