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

时间:2015-10-16 16:34:27

标签: php regex

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

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

2 个答案:

答案 0 :(得分:4)

你需要像/^[\pL\pM\p{Zs}.-]+$/u这样的东西。

解释新位:

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

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

答案 1 :(得分:2)

您可以在案例中添加重音字符:

    if(preg_match("/^[A-Za-z\u00C0-\u017F\.\-]+$/i",       $field)){
       return true;
    }else{
       return false;
    }

另一种方法是在运行正则表达式函数之前首先将单词转换为unicode以清理带重音的字符