gpt4 book ai didi

javascript - 正则表达式在按字面声明时有效,但在使用新运算符和变量值声明时无效

转载 作者:行者123 更新时间:2023-11-29 18:20:35 27 4
gpt4 key购买 nike

给定字符串 input_value=

<div href="asdf"></div>
<div href="1234"></div>

替换模式

var res = input_value.replace(/.+href="(\w+)".+/gm, "$1"); 
console.log(res) //=>asdf 1234

按预期工作

然而,当我使用 new 运算符声明一个 RegExp 对象时(据我所知,为正则表达式提供动态元素的唯一方法),正则表达式失败,我得到了整个 input_value 返回:

var attribute = "href";
var re = new RegExp(".+" + attribute + "=\"(\w+)\".+", "gm");
var res = input_value.replace(re, "$1");
console.log(res) //=> <div href="asdf"></div>
//=> <div href="1234"></div>

这两者的运作方式有何不同?

最佳答案

尝试转义 \w 中的 \:

var re = new RegExp(".+" + attribute + "=\"(\\w+)\".+", "gm"); 

你需要这个是因为 \ 是字符串中的转义字符(例如 \" 转义文字 "),所以你需要当您需要表示文字 \ 时转义它。

关于javascript - 正则表达式在按字面声明时有效,但在使用新运算符和变量值声明时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19125009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com