我有一个输入字符串
var input = 'J1,J2, J3';
我正在使用以下模式提取组值
var regex = /(,? ?(?<JOUR>J[0-9]+)+)/
在提取以下组时
var match = regex.exec(input);
match.groups
仅包含一组。如何从输入字符串中获取所有组J1 J2和J3?
答案 0 :(得分:1)
您可以使用字符串的.match来获取组
input.match(/J[0-9]+/g)
var input = 'J1,J2, J3';
console.log(input.match(/J[0-9]+/gi))
答案 1 :(得分:0)
匹配大写字母J,然后匹配任意数量的数字:
var input = 'J1,J2, J3';
var regex = /J[0-9]+/g;
console.log(input.match(regex));
答案 2 :(得分:0)
您可以考虑字符串的开头和带有可选空格的逗号,并删除外部组以仅使用一个捕获组。为防止数字成为较大单词的一部分,您可以添加单词边界\b
请注意,您可以在+
之后省略量词)+
,因为这会重复该组,并且只会给您最后一次迭代的值。
(?:^|[,-] ?)(?<JOUR>J[0-9]+)\b
(?:^|[,-] ?)
将字符串,逗号或连字符的开头与可选空格匹配(?<JOUR>J[0-9]+)
命名捕获组JOUR
,匹配J
,然后匹配1个以上数字\b
单词边界,以防止数字成为大单词的一部分使用exec从第一个捕获组获取值
const regex = /(?:^|, ?)(?<JOUR>J[0-9]+\b)+/g;
let m;
[
"J1, J2, J3 - J5, J7",
"J1,J2, J3"
].forEach(str => {
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}
});
答案 3 :(得分:0)
const input = 'J1,J2, J3,J10';
const regexJfollowOneDigit = /(J\d{1}(?!\d))/g
const regexJfollowOneOrMoreDigit = /(J\d+)/g
console.log(input.match(regexJfollowOneDigit))
console.log(input.match(regexJfollowOneOrMoreDigit))