URL中的RegEx选择

问题描述 投票:0回答:2

我正在尝试替换文件中的标记。一条线上可以有多个标记,并且分界线是&&

例:

{
  "host": "&&main_service&&/&&auth_endpoint&&"
}

如果你使用正则表达式:

const delimiter = '&&';
const delimeterRegex = new RegExp(`${delimiter}.*${delimiter}`);

......问题是单独不匹配;它可以匹配整个字符串(所以我得到["&&main_service&&/&&auth_endpoint&&"]作为结果,而不是获得["&&main_service&&", "&&auth_endpoint&&"]

我如何单独获得两个结果,而不是一起?

编辑:代码我用来做替换:

const findUnreplacedTokens = () => {
  console.log('Scanning for unreplaced tokens...');
  const errors = [];
  lines.forEach((ln, i) => {
    const tokens = delimeterRegex.exec(ln);
    if (tokens) {
      errors.push({
        tokens,
        line: i+1,
      });
    }
  });

  if (errors.length) {
    handleErrors(errors);
  } else {
    console.log('No rogue tokens found');
    console.log(logSpacing);
  }
};
javascript regex
2个回答
0
投票

const regex = /&&(.*?)&&/g;
const str = `&&main_service&&/&&auth_endpoint&&`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach(function(match, groupIndex) {
    		if(match.indexOf("&&") !== -1) return;
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

0
投票

使用[^&]和g(全局)

const delimeterRegex = new RegExp(`$ {delimiter} [^&] * $ {delimiter}`,'g');

© www.soinside.com 2019 - 2024. All rights reserved.