gpt4 book ai didi

javascript - 在 javascript 中使用捕获组从变量创建正则表达式

转载 作者:行者123 更新时间:2023-11-30 10:05:23 24 4
gpt4 key购买 nike

我如何从一个变量创建一个正则表达式,以便它有一个捕获组,然后可以在 replace() 调用中使用?

以下是我目前尝试过但没有成功的方法。

var term = 'test'
var r = new RegExp('('+term+')', "ig");

$('#test').html( $('#test').html().replace(r, '<span class="found">'+$1+'</span>') ); // Uncaught ReferenceError: $1 is not defined
.found{
background-color:yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="test">This is a test</div>

最佳答案

我想这是否如您所愿?主要是用$1在替换字符串中,如 <span class="found">$1</span> .

var term = 'test'
var r = new RegExp('('+term+')', "ig");

$('#test').html( $('#test').html().replace(r, '<span class="found">$1</span>') );
.found{
background-color:yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="test">This is a test</div>

您也可以丢弃捕获组并使用 $& backreference在引用整个匹配项的字符串替换模式中以及 escape搜索字符串,因为如果它包含 special regex chars ,它可能无法匹配:

var term = 'test+test'
var r = new RegExp(term.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "ig");

$('#test').html( $('#test').html().replace(r, '<span class="found">$&</span>') );
.found{
background-color:yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="test">This is a test+test</div>

关于javascript - 在 javascript 中使用捕获组从变量创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433696/

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