诡异的js正则问题,匹配到了正则里没有的字符

来源:百度知道 编辑:UC知道 时间:2024/05/02 10:24:34
function ddd() {
var temp = " $";
var reg = /[\'\";#-*%&]+/;
alert(reg.test(temp))
}

正则表达式中,并没有匹配美元符号$,但是alert的结果竟然是true,为什么啊

reg中用到了-这个符号,表示#到*号之间所有的字符,而$符号正好在#与*之间,因此会出现为true的问题。去掉-这个符号就回为false了。
比如
var numtemp = "2";
var numreg = /[1-5]/
alert(numreg.test(numtemp));

基础没学好,哈哈

呵呵 “-” 是正则式的关键字符

你写成这样试试 var reg = /[\'\";#\-*%&]+/;

对“-” 转义一下

var reg = /[\'\";#-*%&]+/;
改成var reg = /[\'\";#*%&-]+/;
即调整减号的位置,因为#-*,意味着键盘上从#到*的所有符号(即#$%^&*),
这里的减号意思被改变了。
试一下吧!

mark