2013-03-02 93 views
0

我想让我的模式允许:a-z(可以有重音符号),A-Z(可以有重音符号),短划线,空格和点。 这种模式应该写成哪种方式?模型规则模式

实际模式:

array('name','match', 'not' => true, 'pattern' => '/[^a-zA-Z0-9-\s]/') 

回答

0

^[]含义所以你需要的是几乎相同:-)

/[a-zA-ZÁ-ý0-9-\s]/u

进一步阐述什么你可能需要的是/^[a-zA-ZÁ-ý0-9-\s]+$/,它允许整个字符串只是里面有什么的[]和你想要的(在+是尽可能多的字符有)

+0

这不符合带口音的字符 – w00 2013-03-02 17:32:38

+0

@ w00,你是对的!我为unicode添加了'/ u'修饰符。 – gmaliar 2013-03-02 17:36:30

+1

不得不指出,这也接受中国,韩国,希腊(等)字母。它也接受像'<>()*&^ ... etc'这样的字符。 – w00 2013-03-02 17:40:55

2

试试下面的正则表达式,我认为这是你在找什么:

$str = 'hjkáÁdfgçÇhj.-hj'; // Matches your criteria 
if(preg_match('/^[a-zA-ZÁ-ý\-\. ]+$/', $str)) 
    echo 'match'; 
else 
    echo 'no match'; 
+0

不工作array('name','match','not'=> true,'pattern'=>'/^[a-zA-ZÁ-ý\ - \。] + $ /'),' – 2013-03-04 18:51:05

+0

你可能会展示更多的代码。例如,你如何实际匹配你的结果?因为我提供的代码工作:http://codepad.viper-7.com/2Fr3G7 – w00 2013-03-05 09:43:01

0

能你试试这个


array('name','match', 'not' => true, 'pattern' => ''^([a-zA-ZÁ-ý\-\. ]+)^'')