【问题标题】:Regex: Unable to do negative lookahed正则表达式:无法进行负前瞻
【发布时间】:2018-02-05 01:30:29
【问题描述】:

这是我的输入文本:

英特尔酷睿 i3-4170 3.7GHz

我正在尝试将 3.7GHz 替换为 XXX

这是我的模式:

/\s(?=[^\s]+(.*?GHz)$)/

但这匹配:i3-4170 3.7GHz

如果我添加 global 标志,我会在第二组中得到我需要的东西,但我不确定这是否可靠。

https://regex101.com/r/ARa1tG/1

【问题讨论】:

  • 您能否提供另一个输入文本示例,因为我不知道您为什么要使用如此复杂的正则表达式来进行这样的简单模式匹配。 \d+\.\d+GHz 这个正则表达式也可以完成这个例子的工作

标签: javascript regex regex-negation regex-lookarounds


【解决方案1】:

你可以使用正则表达式

\b[^\s]*GHz\b

regex 101 demo

【讨论】:

  • 更简单:[^ ]*GHz
  • 更简单:\S*GHz - 第二个 \b 可能有用,但第一个没有任何作用。
【解决方案2】:

我的回答:

\b\d+(?:\.\d+)?ghz\b

\b    // word boundary
\d+   // 1 or more digits
(?:   // optional group (not captured)
\.\d+ // a dot, then 1 or more digits
)?    // end of group
ghz   // literal
\b    // word boundary 
  • 标志:g、i
  • 步数:91

Demo

【讨论】:

    【解决方案3】:

    另一种方式可以 - 更具体 - :

    /[\d.]*\dGHz/g
    

    [Regex Demo]

    【讨论】:

    猜你喜欢
    • 2021-10-11
    • 2011-10-14
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多