正则表达式:匹配除一个单词之外的所有内容[重复]

Posted

技术标签:

【中文标题】正则表达式:匹配除一个单词之外的所有内容[重复]【英文标题】:Regex: Match everything but one word [duplicate] 【发布时间】:2014-12-30 01:24:06 【问题描述】:

我正在寻找一种正则表达式模式,它可以匹配除一个精确单词之外的所有内容。

例如,分辨率:

monitors/resolutions // Should not match
monitors/34          // Should match
monitors/foobar      // Should match

我知道您可以排除单个字符的列表,但是如何排除完整的单词?

【问题讨论】:

这是这里最常见的问题之一,提问前请先搜索。 【参考方案1】:

使用否定的前瞻断言,

^(?!.*resolutions).*$

^(?!.*\bresolutions\b).*$

DEMO

【讨论】:

【参考方案2】:

function test(str)
    let match,
        arr = [],
        myRe = /monitors\/((?:(?!resolutions)[\s\S])+)/g;

    while ((match = myRe.exec(str)) != null) 
         arr.push(match[1]);
     

  return arr;


console.log(test('monitors/resolutions'));
console.log(test('monitors/34'));
console.log(test('monitors/foobar'));

function test(str)
    let match,
        arr = [],
        myRe = /monitors\/(\b(?!resolutions\b).+)/g;

    while ((match = myRe.exec(str)) != null) 
         arr.push(match[1]);
     

  return arr;


console.log(test('monitors/resolutions'));
console.log(test('monitors/34'));
console.log(test('monitors/foobar'));

【讨论】:

以上是关于正则表达式:匹配除一个单词之外的所有内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:匹配文本段落中除特定短语外的所有内容

正则表达式:匹配除特定模式之外的所有内容

正则表达式 - 如何匹配除特定模式之外的所有内容

正则表达式,匹配除 \r \n 之外的所有内容作为普通字符

正则表达式:允许除某些选定字符之外的所有内容[重复]

如何使用正则表达式选择除捕获组之外的所有内容?