【问题标题】:Replace two patterns at the same regex in JavaScript在 JavaScript 中用同一个正则表达式替换两个模式
【发布时间】:2022-01-17 13:47:54
【问题描述】:

我需要在javascript中替换字符串中的一个或两个字母,但字母相同,那么如果我替换两个外观之一,则格式不正确:

HH:mm z [on] D MMM YYYY
HH:mm zz [on] D MMM YYYY

在示例中的第一种情况下,z 应由 CEST 替换,而 zz 应由中欧夏令时替换。

我尝试使用正则表达式,但可以替换第一个模式的确切出现而不影响第二个模式?

【问题讨论】:

  • 这里的两个替代品是什么,您可以将它们包括在您的问题中吗?
  • 替换为 z 和 zz。
  • yourstring.replace(/\bz\b/g, 'CEST') // 将替换 'z' 而不是 'zz'
  • 如果你使用正则表达式\bzz\b|\bz\b'zz'如果存在则匹配,否则'z'如果存在则匹配。然后,您可以根据匹配的内容替换匹配项。请注意,交替必须首先尝试匹配'zz'\bz\b|\bzz\b 将不起作用。

标签: javascript regex


【解决方案1】:

不值得使用正则表达式 - 只需执行两次替换或循环 {zz:"Central European Summer Time",z:"CEST"} 以先替换 zz

let str = `HH:mm z [on] D MMM YYYY
HH:mm zz [on] D MMM YYYY`

Object.entries({zz:"Central European Summer Time",z:"CEST"})
  .forEach(([key,val]) => str = str.replaceAll(key,val))
console.log(str)

【讨论】:

  • 它工作正常。我试图用正则表达式同时替换几个组,但这是一个很好的选择。
猜你喜欢
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
相关资源
最近更新 更多