u013597893
mcxx
采纳率0%
2017-03-05 08:12 阅读 753

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条回答 默认 最新

  • showbo GoCityPass新加坡曼谷通票 2017-03-05 08:28

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

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

    点赞 评论 复制链接分享

相关推荐