仅在字符串的开头或末尾使用javascript中的regex匹配模式

match pattern only at first or at the end of a string with regex in javascript

本文关键字:中的 javascript regex 模式 字符串 开头      更新时间:2023-09-26

示例代码

<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>

将匹配所有锚元素

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

感谢

我只想替换第一场比赛

如果不使用g全局标志,则只替换第一个匹配项。参见小提琴:

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

要将匹配项绑定到字符串的开头,请使用^起始锚点。


好奇是否有可能在比赛结束时替换

如果您只想替换字符串末尾的某些内容,请使用端锚$

但要替换模式的最后一个匹配,请先放点吃的东西,然后再捕获
替换为$1。。。其中CCD_ 5包含第一个带括号的子模式的匹配。参见小提琴:

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

(['s'S]*)贪婪地吃掉任何字符并捕获到$1,直到找到后续模式。


旁注:Regex不适合解析任意html。考虑使用解析器。