php regex只允许字符串中的英文字符

时间:2011-06-10 08:08:15

标签: php regex preg-match character

我想在文本框中只插入英文字符和其他特殊字符,如

$!@{]{[

等...

但我还要检查字符串是否包含至少2个字符:(a-zA-Z0-9)

所以我想到了这个:

preg_match('/[^a-zA-Z0-9 -"?()[]#:/\'_+*%@!~`$><,.;{}|\]/',$string)

这是一个好方法吗?

3 个答案:

答案 0 :(得分:3)

没有你的方法不好

试试这个。您需要在字符类中填写所需的特殊字符。你需要转义]\-^个字符,因为它们在课堂上有特殊含义(取决于它们的位置)。

^(?=.*[A-Za-z0-9].*[A-Za-z0-9])[$!@{}[\]A-Za-z0-9]*$

here on Regexr

第一部分是一个积极的先行,确保你的[A-Za-z0-9]要求的两个字符在字符串的某处。

然后是角色类[A-Za-z0-9])[$!@\{\}\[\]A-Za-z0-9],您可以在其中放入要匹配的角色。

表达式开头的^确保它从开头开始匹配,最后$确保它匹配字符串的结尾。

示例开头的^是对完整字符类的否定,我猜你不想要的,如果你想匹配字符^把它放在其他地方在课堂里。你班级中间的-定义了一个符合-"所有内容的字符范围,我不知道它们是什么字符,但可能比你想要的更多。将-放在开头或结尾处或将其转义。

答案 1 :(得分:0)

$parameter ='(a-zA-Z){2}';
if $string='kasdfhk890';

preg_match($string,$parameter); // 
return false;

if $string='k';


preg_match($string,$parameter); // single char error
return false;

if $string='kuyyee';

preg_match($string,$parameter);// english character only
return true;

You want learn more try this link

答案 2 :(得分:0)

(?:.*?[0-9a-zA-Z]){2,}[0-9a-zA-Z$!@{\]{\[]*