mcxx 2017-03-05 08:12 采纳率: 0%
浏览 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条回答 默认 最新

  • Go 旅城通票 2017-03-05 08:28
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器