【问题标题】:Regex capturing groups that do not match expression正则表达式捕获不匹配表达式的组
【发布时间】:2017-04-29 16:47:50
【问题描述】:

我有一个看起来像 "focusin mouseover input.test test:mousover" 的字符串。

我想要做的是获取与表达式/\w+[.:]+\w+/ig 不匹配的组,因此在这种情况下只有focusinmouseover

编辑:这是用于 javascript。

【问题讨论】:

  • 这个字符串focusin input.test mouseover test:mousover focusout应该匹配什么?
  • 是 JavaScript 吗?只有在 PCRE 中您可以省略匹配项,在其他风格中您需要使用代码来获得您需要的内容,同时省略其他匹配项。顺便说一句,test:test:mousover 这样的词有效吗?你是提取还是替换?如果替换,用什么替换?
  • @WiktorStribiżew 它是用于 javascript 的,是的,我不认为它是相关的,我的错,不,我提供的示例是字符串中可能出现的现存内容。
  • @RomanPerekhrest 同样的事情focusin mouseover focusout,我想基本上不符合我的表达。
  • @WiktorStribiżew 这不是为了提取,我想在每个与我的表达式不匹配的组之后添加一个字符串。

标签: javascript regex match


【解决方案1】:

您可以拆分字符串并将正则表达式应用于每个部分。

var str = "focusin mouseover input.test test:mousover";
var newstr = 'addme';

str = str.split(/\s+/).map(function (s) {
    // if matched, do nothing
    if (/^\w+[.:]\w+$/i.test(s))
        return s;
    // otherwise add new str
    return s + newstr;
}).join(' ');

console.log(str);

// focusinaddme mouseoveraddme input.test test:mousover

【讨论】:

  • 是的,这就是我目前所做的,拆分、循环、修改。但是自从我开始使用正则表达式以来,我想如果可能的话,我会一直使用它。
猜你喜欢
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 2021-05-28
相关资源
最近更新 更多