用图像标签替换自定义标签

时间:2014-06-28 07:20:26

标签: javascript regex

我正在尝试使用用户的纯文本编辑器插入图像 我的自定义标记的语法是

[^img]www.uploadedimage.com/image.jpg[$img]

需要转换为

<img src="www.uploadedimage.com/image.jpg" />

我发现以下正则表达式是成功的

var re = /\[\^img\](.+?)\[\$img\]/g;
var userInput="[^img]www.uploadedimage.com/image.jpg[$img]"
var newstr = userInput.replace(re, "<img src=\"$1\"  />");

我想知道我是做得对还是有缺陷......或者即使是为了这个目的而使用正则表达式,如果不是可能的解决方案?

1 个答案:

答案 0 :(得分:1)

这看起来很棒。

  • 总体而言。在我看来,您不需要更改内容......或者+ vs *我将在下面解释

  • 捕获。对于捕获,您的另一个选择是使用([^\[]+)而不是(.+?)。这将匹配任何不是开放方括号的字符([$img]分隔符的开头)。理论上的“好处”是回溯较少(懒惰的点星使得引擎在每一步都回溯)。但是真的......在现代机器上,没关系。

  • 量词。您确实意识到,如果您的图片代码为空,则不会取代任何内容,对吧?那是因为您的+需要匹配一个或多个字符。如果这是一个问题,请使用*而不是+,因为*将匹配零个字符或更多。

干得好!