仅在javascript中使用正则表达式的字符串的第一个或末尾匹配模式

时间:2015-07-25 02:11:51

标签: javascript regex

示例代码

<div>content</div><a href="http://www.example.com">jump link</a>
<div>content</div><a href="http://www.example.com">jump link</a>
<div>content</div><a href="http://www.example.com">jump link</a>

我想替换字符串中匹配的第一个或最后一个锚元素(

我的正则表达式是:

<a.[^>]*>.[^<>]*</a>

将匹配所有锚元素

实际上我只想替换第一场比赛,但我真的很好奇在比赛结束时替换的可能性。

由于

1 个答案:

答案 0 :(得分:0)

  

我只想替换仅限第一场比赛

如果您不使用g global flag,则只会替换第一个匹配项。 See fiddle

var res = str.replace(/<a[^>]*>[^<]*<\/a>/, "first");

要将匹配项绑定到字符串的开头,请使用^ start anchor

  

对在比赛结束时替换的可能性感到好奇

如果您只想替换字符串末尾的内容,请使用end anchor $

但是为了替换模式的最后一个匹配,请在之前添加一些东西capture。用“$1替换... ... $1包含匹配的第一个parenthesized subpatternSee fiddle

var res = str.replace(/([\s\S]*)<a[^>]*>[^<]*<\/a>/, "$1last");

([\s\S]*) greedily吃掉any character并抓取到$1,直到找到后续模式。

Sidenote :正则表达式不适合解析任意html。考虑using a parser