我想在文本框中只插入英文字符和其他特殊字符,如
$!@{]{[
等...
但我还要检查字符串是否包含至少2个字符:(a-zA-Z0-9)
所以我想到了这个:
preg_match('/[^a-zA-Z0-9 -"?()[]#:/\'_+*%@!~`$><,.;{}|\]/',$string)
这是一个好方法吗?
答案 0 :(得分:3)
没有你的方法不好
试试这个。您需要在字符类中填写所需的特殊字符。你需要转义]\-^
个字符,因为它们在课堂上有特殊含义(取决于它们的位置)。
^(?=.*[A-Za-z0-9].*[A-Za-z0-9])[$!@{}[\]A-Za-z0-9]*$
第一部分是一个积极的先行,确保你的[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;
答案 2 :(得分:0)
(?:.*?[0-9a-zA-Z]){2,}[0-9a-zA-Z$!@{\]{\[]*