【发布时间】:2018-10-26 14:52:26
【问题描述】:
我希望找到一个典型的正则表达式问题的答案。
- 查找给定行
- 更改该行的内容
许多关于如何使用 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 );
我认为默认可能是更改括号中匹配的数据(不,它不起作用)。请参阅 JSFiddle code example 了解我尝试过但不起作用的方法。
注意:在我的情况下,我试图解决这个问题,因为对于使用 gulp-replace 的简单字符串替换,但这确实是一个 javascript 模式匹配和替换问题,所以我没有将 gulp-replace 带入这个除了提及它之外的问题。
注意:在我的例子中,这段代码没有在浏览器中执行,所以典型的 DOM 操作将不起作用。
我发现的其他问题(但没有回答我的问题)是:
【问题讨论】:
-
一般来说,最好尽可能使用 DOM 遍历而不是正则表达式。
-
另外,如果要使用正则表达式,请将正则表达式传递给
.replace,而不是字符串 -
(?!lastModified)[^\>]+(?=\ 这将匹配日期,然后,您可以更改它。 (在 regex101 上工作:regex101.com/r/kA2kAG/1)
-
你的执行环境是什么? - 描述代码需要替换元素值的宿主(例如代码将在
gulp/webpack/'browser'中运行) -
@CertainPerformance,这是未在浏览器中运行的构建过程的一部分,因此 DOM 在节点中不可用(使用 gulp)。
标签: javascript regex