js expression.test(string)-预期的结果

时间:2019-04-28 05:00:03

标签: 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');
}

为什么在字符串中用“ t!est”传递真值?

我在这里的目标是确保字符串仅包含:

a-z
A-Z
0-9
/
-
.
?
=
&
case insensitive

我只想在使用url(或其他任何东西)之前进行快速,简单的验证...确保它仅由我指定的字符组成。

1 个答案:

答案 0 :(得分:1)

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

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

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