Javascript js expression.test(字符串)-不是预期的结果

Javascript js expression.test(字符串)-不是预期的结果,javascript,regex,Javascript,Regex,我已经有一段时间没有这样做了,我只是不知道问题出在哪里——也许我现在太累了 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'); } 为什么

我已经有一段时间没有这样做了,我只是不知道问题出在哪里——也许我现在太累了

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(或其他任何东西)做一个快速而简单的验证。。。确保它仅由我指定的字符组成。

您只匹配了字符类中的单个字符。如前所述,正则表达式仅(成功地)匹配第一个
/
,并且不再进行解析。将
+
*
添加到字符类的末尾,以匹配测试字符串中的多个字符。最后,将
$
添加到正则表达式的末尾,以锚定到行尾,并确保匹配项与整行匹配

/^[a-zA-Z0-9\/\-\.\?\=\&]+$/


/^[a-zA-Z0-9\/\-\.\?\=\&]*$/

是的。。。疲倦的我使用url.match()复制了表达式。谢谢。/^[a-z0-9\/\-\.\?\=\&]+$/i.test(url)-$是必需的