javascript在匹配行后替换字符串

时间:2018-10-26 14:52:26

标签: javascript regex

我希望找到正则表达式中一个典型问题的答案。

  • 查找给定行
  • 更改该行的内容

许多有关如何使用RegEx替换的示例假定您知道要替换的模式。非常适合教学,但非典型(IMO)。请参见w3 schoolsMDN。如果它在MDN页面上,请指出。

在我的最新问题中,我有一个HTML文件,该文件的一行上具有uniq ID,因此我可以执行此简单替换。我需要修改的行的语法如下所示。我可以在文件中放置一个唯一的字符串,以便找到正确的行进行更新。

<span id="lastModified">2018-10-26</span>
<span id="builtBy">Pat</span>

我需要找到包含id="lastModified"的行并更改日期。

我需要找到包含id="builtBy"的行并更改日期。

我尝试了一些不同的事情。一个是

var res = str.replace(/id="lastModified".*>(.*)<.span>/, newDate );

我认为默认设置可能是更改parens中匹配的数据(不,它不能那样工作)。请参阅JSFiddle code example我尝试过的无效的方法。

注意:就我而言,我正在尝试解决这个问题,因为使用gulp-replace进行简单的字符串替换,但这实际上是javascript模式匹配和替换问题,因此我不会将gulp-replace引入其中除了提这个问题。

注意:就我而言,此代码未在浏览器中执行,因此典型的DOM操作将无法正常工作。

我发现的其他问题(但没有回答我的问题)是

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来匹配您的第一行:

/(<span id="lastModified">)(.*?)(</span>)/

它基本上从字面上匹配文本并将其捕获为三个组,然后将其用于替换模式,可以是:

$12018-10-26$3

首先将其替换为$1(第一个匹配的组),然后是您的日期(您希望来自变量),最后是$3,它是结束跨度。