2015-10-16 68 views
0

我在創建這個正則表達式來保存它之前過濾某些文本,我的想法是隻保留字母,空格和帶有口音或字母的字母,但最後兩種情況都是作爲重音 - 不工作,我希望你能幫助我。正則表達式字母,空格和重音

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

添加它們(你需要音符的字母),以你的性格類,並使用u修飾符來處理UTF8字符串。 –

+0

當它是'[]'中的最後一個時,不需要轉義破折號。如果使用'/ i',則不需要A-Z。所以你的正則表達式變成:'/^[a-z .-] + $/i' –

+1

@ Al.G .:不需要在字符類中逃避點。 –

回答

4

你想之前清空重音字符像/^[\pL\pM\p{Zs}.-]+$/u

解釋新位:

  • \pL - 以Unicode字母分類
  • \pM匹配任何東西 - 結合標記(如結合附加符號)
  • \p{Zs} - 空格分隔
  • u - 模式和主題字符串被視爲UTF-8

對於正則表達式,包括Unicode類別上Unicode的詳細信息,請參閱http://www.regular-expressions.info/unicode.html

+0

謝謝!這對我來說,事實上我仍然有很多懷疑,即使正則表達式工作,所以你離開了我。謝謝! – NHTorres

0

您可以將重音的字符添加到您的情況:

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

另一種方法是將字轉換成Unicode剛你運行你的正則表達式功能

相關問題