正则表达式字母、空格和重音

NHT*_*res 1 php regex

我制作了这个正则表达式来在保存之前过滤某些文本,我的想法是只保留字母、空格和带有重音或 - 的字母,但最后两种情况,都作为重音 - 不起作用,我希望你能帮助我。

if(preg_match("/^[a-zA-Z .\-]+$/i", $field)){
    return true;
}else{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

use*_*918 7

你想要类似的东西/^[\pL\pM\p{Zs}.-]+$/u

解释新的位:

  • \pL - 匹配 Unicode 字母类别中的任何内容
  • \pM - 组合标记(例如组合变音符号)
  • \p{Zs} - 空白分隔符
  • u - 模式和主题字符串被视为 UTF-8

有关正则表达式中 Unicode 的更多信息,包括 Unicode 类别,请参阅http://www.regular-expressions.info/unicode.html