Escape html,除了在[code] [/ code]标签内

时间:2018-01-28 21:42:51

标签: javascript string-parsing

我想解析一个字符串并输出它,执行以下操作:

  • 转义html - 例如:
    • return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
  • 以外的[code] [/ code]标签
  • 中的文字
  • 为字符串
  • 中的多个代码标记工作

如何识别标签内/外的字符串?我不需要存储字符串片段,只需处理它们并输出。

非常感谢

1 个答案:

答案 0 :(得分:0)

我在下面写了一个示例,将字符串拆分为[code][/code]标记,然后转义不在这些标记之间的所有html,然后使用join将该数组放回字符串中命令。

请注意,如果缺少其中一个[code]标记,程序将会出现意外行为。

string = "hello world<b>this is mohammad's amazing code:</b> [code]<br>mohammad<br>is<br>amazing[/code]<br>"
tempString = string.split(/(\[code\])(.+)(\[\/code\])/g)

var isCode = 0
for (var i = 0; i < tempString.length; ++i) {
  if (tempString[i].match(/(\[code\])/g)) {
    //code begins here
    isCode = 1
  } else if (tempString[i].match(/(\[\/code\])/g)) {
    //code ends here
    isCode = 0
  }
  if (isCode == 0) {
    tempString[i]=tempString[i].replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  }
}
string = tempString.join("")
alert(string)

此演示也可以在jsfiddle

上播放