gpt4 book ai didi

javascript - 在数组元素上使用 RegExp 替换()

转载 作者:行者123 更新时间:2023-12-02 19:02:46 24 4
gpt4 key购买 nike

我想编写一个 JavaScript 函数,将一些简单的 BBcode 标签(如 [red] [/red])转换为 Html 标签。我认为replace()函数是最好的方法。我写了一个简单的测试函数来尝试一下,但似乎不起作用。

/**
* @function
* @description Replaces the bb-tags with html-tags
*/
function bbToHtml(form) {
debugger

var text = form.text.value;
bbTags = new Array("[red]", "[yellow]", "[green]", "[/red]", "[/yellow]", "[/green]");
htmlTags = new Array("<font color='red'>", "<font color='yellow'>", "<font color='green'>", "</font>", "<font>", "</font>");

for (var i = 0; i < bbTags.length; i++) {
var re = new RegExp(bbTags[i], "g");
text = text.replace(re, htmlTags[i]);
}

alert(text);
}

它应该转换 "[red]hello[/red]""<font color='red'>hello</font>" ,但它只是给了我一个奇怪的字符串。

出了什么问题?我认为这与我的正则表达式有关。

最佳答案

[] 在正则表达式中具有特殊含义,需要转义,而且您不需要像编写代码那样使用正则表达式,只需做:

function bbToHtml(form) {
debugger

var text = form.text.value;
bbTags = new Array("[red]", "[yellow]", "[green]", "[/red]", "[/yellow]", "[/green]");
htmlTags = new Array("<font color='red'>", "<font color='yellow'>", "<font color='green'>", "</font>", "<font>", "</font>");

for (var i = 0; i < bbTags.length; i++) {
while(text.indexOf(bbTags[i])!==-1){
text = text.replace(bbTags[i], htmlTags[i]);
}
}

alert(text);
}

只是为了让您知道,您可以使用数组文字来代替数组。 new Array(逗号分隔值) 与 javascript 中的[逗号分隔值] 相同。此外,您可以在您的情况下像 map 一样使用数组,例如:

var bbTagsToHTML = {}
bbTagsToHtml["[red]"] = "<font color='red'>"

并迭代它。

如果您也希望转义正则表达式,请参阅 How do you use a variable in a regular expression?对于执行此操作的函数。

您也可以手动执行此操作。 "[red]" 变为 "\[red\]" (括号已转义)。

关于javascript - 在数组元素上使用 RegExp 替换(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636340/

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