我正在尝试捕获星号的多个实例之间的所有字符,这些实例以字符串分隔,以逗号分隔。这是字符串的示例:
checkboxID0*,*checkboxID1*,&checkboxID2&,*checkboxID3*,!checkboxID4!,checkboxID5*
警告:该短语必须以星号开头和结尾。我可以使用以下正则表达式来接近,但是,当捕获的字符串缺少 开始 星号(*)时,它不会丢弃任何匹配项:< / p>
let str = "checkboxID0*,*checkboxID1*,&checkboxID2&,*checkboxID3*,!checkboxID4!,checkboxID5*"
const regex = /[^\,\*]+(?=\*)/gi;
var a = str.match(regex)
console.log(a) // answer should exclude checkboxID0 and checkboxID5
答案返回以下内容,但是,应排除“ checkboxID0和checkboxID5 ”,因为它不是以星号开头。
[
"checkboxID0",
"checkboxID1",
"checkboxID3",
"checkboxID5"
]
先谢谢了!
答案 0 :(得分:1)
您需要在模式的两端都使用星号,并在其之间捕获除逗号和星号以外的所有1个或更多字符:
/\*([^,*]+)\*/g
请参见regex demo
模式详细信息
\*
-星号([^,*]+)
-捕获组1:除,
和*
之外的一个或多个字符\*
-星号JS演示:
var regex = /\*([^,*]+)\*/g;
var str = "checkboxID0*,*checkboxID1*,&checkboxID2&,*checkboxID3*,!checkboxID4!,checkboxID5*";
var m, res = [];
while (m = regex.exec(str)) {
res.push(m[1]);
}
console.log(res);