我想检查字符串只允许a-z A-Z 0-9 . / ? &
,但我不确定如何使用preg_match()。
如果您还可以解释代码的每个部分,我会很感激! (即为什么要添加/^
以及如何添加/
)
由于
答案 0 :(得分:4)
这是:
$input = 'Hello...?World';
$regex = '~^[a-z0-9&./?]+$~i';
if (preg_match($regex, $input)) {
echo "yeah!";
}
您可以构建自己的角色类并以这种方式验证字符串。
说明:
~
^ # string start
[ # start character class
a-z # letters from a to z
0-9 # digits from 0 to 9
&./? # &,.,/ and ? chars
] # end character class
+ # repeat one or more time
$ # string end
~ix
答案 1 :(得分:-1)
if ( preg_match('[^a-zA-Z0-9./?&]', 'azAZ09./?&') ) {
//found a character that does not match!
} else //regex failed, meaning all characters actually match
与ioseb非常相似,但你需要包含A-Z,因为大写不同于小写。他已经为角色写过很棒的指南,所以我只提出另一种正则表达式。
我依赖于否定(开头的^,当它包含在字符类'[]'的开头时,它有不同的含义),后跟“允许的字符”字符串。
这样,如果正则表达式发现任何不是允许的字符([]表示一个字符),它将停止解析并返回true,这意味着找到了无效的字符串。