我正在尝试使用用户的纯文本编辑器插入图像 我的自定义标记的语法是
[^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\" />");
我想知道我是做得对还是有缺陷......或者即使是为了这个目的而使用正则表达式,如果不是可能的解决方案?
答案 0 :(得分:1)
这看起来很棒。
总体而言。在我看来,您不需要更改内容......或者+
vs *
我将在下面解释
捕获。对于捕获,您的另一个选择是使用([^\[]+)
而不是(.+?)
。这将匹配任何不是开放方括号的字符([$img]
分隔符的开头)。理论上的“好处”是回溯较少(懒惰的点星使得引擎在每一步都回溯)。但是真的......在现代机器上,没关系。
量词。您确实意识到,如果您的图片代码为空,则不会取代任何内容,对吧?那是因为您的+
需要匹配一个或多个字符。如果这是一个问题,请使用*
而不是+
,因为*
将匹配零个字符或更多。
干得好!