我想检查一个字符串只允许a-z A-Z 0-9 ./? &
,但我不确定如何使用preg_match()。php preg_match或preg_replace验证
如果您还可以解释代码的每个部分是我会感激它! (即你为什么添加/^
以及如何添加一个/
)
感谢
我想检查一个字符串只允许a-z A-Z 0-9 ./? &
,但我不确定如何使用preg_match()。php preg_match或preg_replace验证
如果您还可以解释代码的每个部分是我会感激它! (即你为什么添加/^
以及如何添加一个/
)
感谢
这就是:
$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
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,因为大写字母是小写来自不同。他已经写了一个伟大的指导人物已经所以我只是提出一个替代正则表达式。
我依赖于negation而不是(在开始时^,当包含在字符类'[]'的开头时,它具有不同的含义),接着是“允许的字符”字符串。
这样,如果正则表达式发现任何不是允许的字符([]表示一个字符),它将停止解析并返回true,这意味着找到了无效的字符串。
'。?/'不是字符类中的元字符,也不需要转义。 '/'不管它是不是元字符,只要将它用作分隔符就只需要转义。每个字符都有它的字面含义,除了'] \^- '为了简单起见,您还可以更好地做'if(!preg_match('〜[^ a-z0-9&。/?]〜i'))' PCRE做的不多,我感觉。 – DaveRandom
@DaveRandom编辑感谢! – ioseb