javascript - 如何在 RegEx 中分割可选参数?

标签 javascript regex

实际上我有以下 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/

相关文章:

javascript - 使用jquery将php数组发送到外部页面

javascript - 如何通过表单外的按钮提交表单?

python - 为什么这个正则表达式代码不起作用

带有\w 的 Python 正则表达式不起作用

javascript - 如何使用正则表达式实现以下结果?

r - 使用 R 中的 stringi 提取字符串中某些字符之后的多个子字符串

java - 这个正则表达式如何消除 html?

javascript - 拥有父元素时如何包装元素?

javascript - 具有独特匿名函数的removeEventListener

javascript - jQuery 选择最接近的所有子项