因此,我正在使用城市词典api,并且它们的术语可以使用api与[term]链接到其他人,您会得到我认为使它们实际上在markdown中超链接的框,即term,所以我尝试制作一个替换正则表达式来做到这一点到目前为止到目前为止还不错,但是当盒子中有多个单词,例如[空格]时,它不起作用,我一直试图找到一个匹配的正则表达式,但是最终却匹配了整个字符串,这是我使用的正则表达式,效果很好但没有空间
"example [string] with [some] boxes".replace(/(\[(\S+)\])/ig, "$1(https://www.urbandictionary.com/define.php?term=$2)");
您可以使用/(\[([^\][]+)])/g
regex并替换为"$&(https://www.urbandictionary.com/define.php?term=$1)"
:
console.log(
"example [string] with [space words] boxes".replace(
/\[([^\][]+)]/g, "$&(https://www.urbandictionary.com/define.php?term=$1)")
);
如果空格应替换为+
您可以使用
console.log(
"example [string] with [space words] boxes".replace(
/\[([^\][]+)]/g, (x,y) =>
x + "(https://www.urbandictionary.com/define.php?term=" + y.replace(/\s+/g, "+") + ")")
);
请注意,您不必将整个模式都包含在一个捕获组中,您始终可以$&
在替换模式中借助占位符来访问整个匹配值。因此,(...)
建议的模式中只有一个。
图案细节
\[
-一个[
字符([^\][]+)
-捕获组1:除[
和以外的任何一个或多个字符]
(请注意,[
字符类内不必转义,但]
必须)]
-一个]
字符(请注意,]
不必在字符类外部进行转义)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句