实际上我有以下 RegExp 表达式:
/^(?:(?:\,([A-Za-z]{5}))?)+$/g
所以接受的输入应该类似于 ,IGORA 但即使是 ,IGORA,GIANC,LOLLI 也是有效的,在这种情况下我可以将字符串分成 3 组,在其他情况下组号应该等于用户通过 RegExp 测试的输入。
我试图在 JavaScript 中做这样的事情,但它只返回最后一个值
var str = ',GIANC,IGORA';
var arr = str.match(/^(?:(?:\,([A-Za-z]{5}))?)+$/).slice(1);
alert(arr);
所以输出是 'IGORA' 而我希望它是 'GIANC' 'IGORA'
还有一个例子
/^([A-Z]{5})(?:(?:\,([A-Za-z]{2}))?)+$/g
正则表达式的测试可能有至少 5 个图表字符串,但它也可以有其他 5 个图表字符串,用逗号分隔,因此来自输入
IGORA,CIAOA,POPOP
我会有一组 ["IGORA","CIAOA","POPOP"]
最佳答案
您可以捕获由可选的前置逗号或可选的尾随逗号包围的捕获中的单词。
您可以测试 regex here : ,?([A-Za-z]+),?
const pattern = /,?([A-Za-z]+),?/gm;
const str = `,IGORA,GIANC,LOLLI`;
let matches = [];
let match;
// Iterate until no match found
while ((m = pattern.exec(str))) {
// The first captured group is the match
matches.push(m[1]);
}
console.log(matches);
关于javascript - 如何在 RegEx 中分割可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168954/