2012-09-09 61 views
1

我试图使用preg_match()只允许字符从AZ。我使用这个字符串:PHP - preg_match()允许意想不到

if (! preg_match('/[^a-z]/i', $name)) { 
    echo 'Invalid characters in your name..'; 
    return false; 
} 

但由于某些原因,它允许所有字符。我已经很长时间在这些线上主演过了,我不明白为什么它不起作用。

+1

更改正则表达式为'^ [A-Z] + $'shuld工作 – Breezer

+0

@Breezer做一个答案,请。这工作:) – skolind

+0

那里你去希望它可以帮助 – Breezer

回答

4

你的模式只搜索一个字符,这就是为什么它每次都会返回真值,如果不是字符串只包含无效字符。

改变这个你模式这一点,你应该建立和运行

^[a-z]+$ 

,如果你想允许大写字母太

^[A-za-z]+$ 

也许nummbers

^[A-za-z0-9]+$ 

编辑: 如果要检查一个字符串<> 的,你可以使用

(<|>) 

但它将返回true

+0

非常感谢!那么我将如何搜索'<>'?如果存在,则返回false。 – skolind

+0

这个代码不允许'<>'所以如果它包含'<>'它会返回false – Breezer