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内容,不是转义,这个和代码中的字符串变量不一样。要区分清楚

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面