我在尝试着
>查找与表达式匹配的子字符串((我的子字符串))
>用标记包装结果,然后
>在不同的结果上注入不同的变量.
它适用于一个子字符串:
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变得懒惰?否则它将匹配(((到第二个结尾))
>匹配不会返回$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>