0

我有这个字符串:

str = "<table><tr><td>!img! images/image1.jpeg !*img!</td><td> 12:34</td></tr><tr><td>!img! images/image2.jpeg !*img!</td><td>12:35</td><tr></table>;

我需要!img! text.... !*img!<img src="text...." />

我对 RegExp 不是很好,我尝试了很多东西,但都没有奏效,我能想到的最好的方法是:

str.replace(/(!img!)(.+)(!\*img!)/g,  '<img src="$2" />');

然而,上面代码的问题是它选择了第一次!img!出现和最后一次!*img!出现,而忽略了它们之间的所有内容!

任何帮助,将不胜感激。

4

1 回答 1

1

正则表达式默认是贪婪的,它.+会匹配尽可能多的文本。尝试添加 ? 在它之后,你的正则表达式是/(!img!)(.+?)(!\*img!)/.

问号会给出加号“惰性”行为,因此它会尝试匹配尽可能少的文本。

于 2013-03-29T21:14:51.577 回答