gpt4 book ai didi

jquery:如何使用正则表达式用html一些标记包装子字符串并插入变量?

转载 作者:行者123 更新时间:2023-12-01 01:21:23 24 4
gpt4 key购买 nike

我正在努力

  1. 查找与表达式((我的子字符串))匹配的子字符串
  2. 用标记包装结果并
  3. 在不同的结果上注入(inject)不同的变量。

它适用于一个子字符串:

var link1 = "URL_1",
myRegex = /(\(\(.*\)\))/g,
myOldString = "lorem ((ipsum dolor)) sit amet consectur";

var myNewString = myOldString.replace(myRegex, "<a href='"+link1+"' class='red'>$1</a>");
$('.mytext').html(myNewString);
.red {
color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2 class="mytext"></h2>

但我无法让它处理多个结果:

var link1 = "URL_1",
link2 = "URL_2",
myRegex = /(\(\(.*\)\))/g,
myOldString = "lorem ((ipsum dolor)) sit ((amet)) consectur";

var myNewString = myOldString.replace(myRegex, "<a href='"+link1+"' class='red'>$1</a>", "<a href='"+link2+"' class='red'>$2</a>");


$('.mytext').html(myNewString);

有什么提示吗?

最佳答案

  • 输出字符串之间的逗号破坏了替换
  • 匹配不会返回 $1 和 $2,而是返回 $1 两次 - 如果您想要一次全部返回,请使用 .exec 和 while 循环,但我建议使用函数
  • 您还需要使用 ? 使正则表达式变得懒惰。或者它将匹配从 (( 到第二个 )) 的末尾

var urls=["URL1","URL2"],cnt=0;
myRegex = /(\(\(.*?\)\))/g,
myOldString = "lorem ((ipsum dolor)) sit ((amet)) consectur";

var myNewString = myOldString.replace(myRegex,
function(str) { return "<a href='" + urls[cnt++] + "' class='red'>"+str+"</a>" });


$('.mytext').html(myNewString);
.red {
color: red; text-decoration:none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2 class="mytext"></h2>

关于jquery:如何使用正则表达式用html一些标记包装子字符串并插入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171482/

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