2012-01-31 86 views
0

嗯,我目前正在嘗試使用正則表達式,但它沒有做我想做的。CakePHP,用戶名正則表達式

這是一個用戶名正則表達式驗證:

var $validate = array(
      'nom' => array(
       'regex_nom' => array(
        'rule'  => '/^[A-Za-zÉÈÊËÜÛÎÔÄÏÖÄÇéèëêüûçîôâïöäa]+$/', 
        'message' => 'Nom incorrect.' 
       ) 
      ) 
     ); 

好吧,我不認爲這是需要解釋我想要什麼,但問題是,當我進入,例如:Tesédsf它不匹配,並且我不知道爲什麼...

+0

如果您刪除e-acute,它會工作嗎?也許UTF-8 regex'/^\ p {Alpha} * $ /'在PHP中起作用? – Borodin 2012-01-31 16:10:23

+0

天啊,你找到它了! 這只是因爲我的文件沒有以UTF8保存,Thx很多! – Sindar 2012-01-31 16:12:50

+0

是的,那些美妙的Windows代碼頁... – ori 2012-01-31 16:16:06

回答

2

試試這個正則表達式/^\p{L}+$/u。它使用UTF-8字符串檢查每種語言的單詞。

2

您需要/u修飾符來匹配UTF-8字符串。此外Unicode屬性出現,所以你可以寫

'rule'  => '/^\p{Alpha}+$/u', 
+0

在那裏失蹤了一顆星? '/^\ p {Alpha} * $/u' – TimoSolo 2015-09-09 10:16:35

+1

@蒂莫西:是的,謝謝。加號以匹配OP的代碼。這在三年半內一直未被注意到! – Borodin 2015-09-09 11:52:58

0

可能是一個編碼問題。嘗試:

'rule' => '/^\p{L&}+$/'