我希望找到正则表达式中一个典型问题的答案。
许多有关如何使用RegEx替换的示例假定您知道要替换的模式。非常适合教学,但非典型(IMO)。请参见w3 schools和MDN。如果它在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操作将无法正常工作。
我发现的其他问题(但没有回答我的问题)是
答案 0 :(得分:1)
您可以使用此正则表达式来匹配您的第一行:
/(<span id="lastModified">)(.*?)(</span>)/
它基本上从字面上匹配文本并将其捕获为三个组,然后将其用于替换模式,可以是:
$12018-10-26$3
首先将其替换为$1
(第一个匹配的组),然后是您的日期(您希望来自变量),最后是$3
,它是结束跨度。