我无法在nodejs中获得与正则表达式匹配的字符串

时间:2016-07-14 13:09:55

标签: regex node.js exec

我有一个如下所示的字符串

let value : '<ns2:NewsPaper unitid="112345">
        <idType>DG</idType>
      </ns2:NewsPaper>'

我需要的内容 <ns2:NewsPaper.我写了一段代码。但它返回null。这是我的代码:

let abc = /NewsPaper>(\*)</.exec(value);
        console.log(abc);

返回null。为什么呢?

2 个答案:

答案 0 :(得分:0)

更简单的匹配方式是:

let rex = /unitid=\"\d*\"/g;
let abc = rex.exec(value); // ["unitid="112234"", "unitid="112234""]

答案 1 :(得分:0)

这个正则表达式适用于您正在抓取的内容:

unitid="[^"]+"

字面上将匹配unitid="字符。然后它将匹配[^"]

对于像这样的JS:

const value = '<ns2:NewsPaper unitid="112234">';
const regex = /unitid="[^"]+?"/;
const matches = value.match(regex);

console.log(matches);
// => ["unitid=\"112234\""]

注意如何捕获parens是不必要的。这是因为JS实现了match(..)函数。包含捕获parens时的输出将是:

["unitid=\"112234\"", "unitid=\"112234\""]

即使您使用exec(..)功能,也应该会出现同样的行为。因此,在某些情况下,可能需要省略捕获的parens。 matches数组的第一个元素将是你的正则表达式所消耗的任何元素;第一个元素后面的所有内容都是正则表达式捕获的项目。

Here's a link to the JSBin