在Javascript中,正则匹配模式里通过添加字符串,可动态的修改正则内容。
但是通过文本框获取的内容“\d”,可以组成 /\d/gi的正则表达式字符串通过eval执行,而在变量regNew中的"\d"却不能正确当做正则,要把\d换成\d才行呢?虽然特殊字符要转义,而在文本框中获取的\d字符串不需要转义却可以呢?
var regv = "/" + $("reg").value + "/gi";
var regNew = "/" + "\d" + "/gi";
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script>
$ = function (id) {
return document.getElementById(id);
}
str = null;
reg = null;
window.onload = function () {
$("test").onclick = function () {
var str = $("str").value;
var regv = "/" + $("reg").value + "/gi";
var regNew = "/" + "\d" + "/gi";
$("result").value = "输入框的值" + $("reg").value + "\n";
$("result").value += ("字符串内容比对:" + regv + " : " + regNew) + "\n";
$("result").value += eval(regv).test($("str").value) + " : ";
$("result").value += eval(regNew).test($("str").value) + "\n";
$("result").value += "为什么都是字符串连接结果却不同?";
}
}
</script>
</head>
<body>
请点击test按钮<br /> 内容:
<input type="text" id="str" value="2"><br /> 正则:
<input type="text" id="reg" value="\d"><br /> 结果:
<textarea name="" id="result" cols="30" rows="10"></textarea>
<input type="button" value="test" id="test">
</body>
</html>