jQuery:如何使用正则表达式来包装带有一些标记的HTML子字符串并插入变量?

前端之家收集整理的这篇文章主要介绍了jQuery:如何使用正则表达式来包装带有一些标记的HTML子字符串并插入变量? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在尝试着

>查找与表达式匹配的子字符串((我的子字符串))
>用标记包装结果,然后
>在不同的结果上注入不同的变量.

它适用于一个子字符串:

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",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循环,但我建议改用函数
>您还需要使RegEx变得懒惰?否则它将匹配(((到第二个结尾))

var urls=["URL1","URL2"],cnt=0;
  myRegex = /(\(\(.*?\)\))/g,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相关文章