正则表达式-如何匹配同时匹配和不匹配模式的所有字符组?

时间:2019-03-04 21:55:18

标签: javascript regex

我正在尝试匹配既匹配又不匹配模式/\*\d*\*/g的字符组。例如,如果我的字符串是:

"*96* is *5* and not *547*."

我希望我的匹配项为"*96*"" is ""*5*"" and not ""*547*""."

我看到的所有答案都涉及负面的前瞻性,但我只是无法使它们正常工作。

2 个答案:

答案 0 :(得分:1)

除了匹配之外,您还可以在捕获组内使用模式来保留定界符(\*\d*\*)并使用split

let str = "*96* is *5* and not *547*.";
console.log(str.split(/(\*\d*\*)/g).filter(Boolean))

答案 1 :(得分:0)

我知道您要求一个正则表达式的直接答案,但是如何将split与正则表达式分隔符一起使用呢?然后它将把字符串拆分成数组的位置。

var test = "*96* is *5* and not *547*.";
var splits = test.split(/\*\d*\*/g);
console.log(splits);