Javascript 正则字符串连接问题?

在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>

1个回答

var regNew = "/" + "\d" + "/gi";你这里是转义d字符,由于没有这个转义字符,直接断去掉了\,你自己alert下regNew变量值就知道了
要改为
var regNew = "/" + "\d" + "/gi";

从输入框获取的就是\d内容,不是转义,这个和代码中的字符串变量不一样。要区分清楚

showbo
支付宝加好友偷能量挖 垃圾编辑器。。怎么2个斜杠变一个了var regNew = "/" + "\\d" + "/gi";
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!