.replace()正则表达式问题

时间:2011-06-08 12:04:40

标签: javascript regex replace

我可以将一个看起来像这样的字符串作为例子:

sometext<a title="Wink"><img src="http:\\www.seemstatic.com\images\transparent.png" class="emoWink"></a>somemore text<a title="Wink"><img src="http:\\www.seemstatic.com\images\transparent.png" class="emoWink"></a>endof text...

我有以下与上述字符串匹配的Javascript,并将其替换为:)

subject = subject.replace(/<a title="Smile"><img.*<\/a>/, ':)');

抓住它并不贪婪......它匹配两个事件而不是一个。

如何更改此代码以匹配第一次出现?

3 个答案:

答案 0 :(得分:3)

你需要通过添加问号使其变得非贪婪吗?

// Greedy quantifiers
String match = find("A.*c", "AbcAbc");  // AbcAbc
match = find("A.+", "AbcAbc");          // AbcAbc

// Nongreedy quantifiers
match = find("A.*?c", "AbcAbc");        // Abc
match = find("A.+?", "AbcAbc");         // Abc

所以在你的情况下,像

subject = subject.replace(/<a title="Smile"><img.*?<\/a>/, ':)');

答案 1 :(得分:3)

请勿使用正则表达式执行此操作。你已经在使用jQuery了,所以你可以使用jQuery的DOM遍历方法:

yourString = $('<span>' + yourString + '</span>')
                 .find('a[title="Wink"]')
                     .replaceWith(';)')
                 .end()
                 .html();

答案 2 :(得分:0)

从技术上讲,这不是一个jquery问题,它是一个javascript问题,因为这里的替换是在String对象上。

你可以用subject.replace(/search/g, 'replacement');

贪婪替换

g修饰符使其替换所有实例。

使用css选择器,使用jQuery方法可能会更好地解决问题: 例如。 $('.a[title=Smile]').replaceWith(';)')