我有一个如下所示的字符串
let value : '<ns2:NewsPaper unitid="112345">
<idType>DG</idType>
</ns2:NewsPaper>'
我需要的内容
<ns2:NewsPaper.
我写了一段代码。但它返回null。这是我的代码:
let abc = /NewsPaper>(\*)</.exec(value);
console.log(abc);
返回null。为什么呢?
答案 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
数组的第一个元素将是你的正则表达式所消耗的任何元素;第一个元素后面的所有内容都是正则表达式捕获的项目。