javascript正则表达式匹配第二个而不是第一个空格

时间:2014-09-04 12:07:47

标签: javascript regex

我使用以下javascript正则表达式在包含html的字符串中查找模式。

sHTML = sHTML.replace(new RegExp("td>" + sFindPhrase + "[^\'\"\\\/\>\<]* ", "gi"), "<span id='spanFnd'></span><span style='background-color: orange'>$&######");
sHTML = sHTML.replace(new RegExp("[^\'\"\\\/\>\<]" + sFindPhrase + "[^\'\"\\\/\>\<]* ", "gi"), "<span id='spanFnd'></span><span style='background-color: orange'>$&######");

所以如果sHTML是:

<td>brou ha ha </td><td>John May lives&nbsp;</td><td> blablabla</td>

用户输入了 Jo 它不应该匹配整个 John 子字符串吗?但它匹配 John May 。那就是它在字符串中找到的第二个空格字符,它不会停在第一个空格字符中。为什么以及如何解决这个问题?

提前谢谢。

对于那些低估我的问题的人:如果字符串包含html或纯文本,则无关紧要。即使使用纯文本,它仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

? quantifier之后加*来尝试使其变得懒惰:

[^\'\"\\\/><]*?[ ]

Test at regex101