2013-03-29 48 views
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 src="text...." />

更换的!img! text.... !*img!每次出现,我不是很好的正则表达式,我尝试了许多东西但没有工作,我能够拿出最好的是:

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

但是与上面的代码的问题是,它选择第一!img!发生和最后的!*img!发生忽略它们之间的一切!

任何帮助,将不胜感激。

回答

1

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

问号会给加号“懒惰”的行为,所以它会尝试匹配尽可能少的文字。

+0

我没有成像,它有这样一个简单的修复!但它工作:)谢谢 – razzak