有一段时间了,因为我需要这样做,而我只是不明白问题出在哪里-也许我现在已经筋疲力尽了。
var url = '/some-test.php?t=a-t!est&f=&c=4564646&u=4546&ds=45646&de=1254';
if( /^[a-zA-Z0-9\/\-\.\?\=\&]/i.test(url) ) {
console.log('true');
} else {
console.log('false');
}
为什么在字符串中用“ t!est”传递真值?
我在这里的目标是确保字符串仅包含:
a-z
A-Z
0-9
/
-
.
?
=
&
case insensitive
我只想在使用url(或其他任何东西)之前进行快速,简单的验证...确保它仅由我指定的字符组成。
答案 0 :(得分:1)
您只匹配字符类中的单个字符。如前所述,正则表达式仅(成功地)匹配第一个/
,并且不再解析。在字符类的末尾添加+
或*
,以匹配测试字符串中的多个字符。最后,在正则表达式的末尾添加$
以锚定到行尾,并确保匹配项匹配整行。
/^[a-zA-Z0-9\/\-\.\?\=\&]+$/
或
/^[a-zA-Z0-9\/\-\.\?\=\&]*$/