Regular Expressions Basics
Capture Groups
Read named parts from a matched code.
capture-groups
Parentheses create capture groups. After a match, group `1` and group `2` hold the parts matched by the first and second parentheses.
Capture Groups
capture_groups.js
Replay: real traced execution (multi-file project)
const code = "AB-12";
const groups = /^([A-Z]+)-(\d+)$/.exec(code);
let prefix = "none";
let number = "none";
if (groups) {
prefix = groups[1];
number = groups[2];
}
console.log("code=" + code);
console.log("prefix=" + prefix);
console.log("number=" + number);
const code = "CD-34";
const groups = /^([A-Z]+)-(\d+)$/.exec(code);
let prefix = "none";
let number = "none";
if (groups) {
prefix = groups[1];
number = groups[2];
}
console.log("code=" + code);
console.log("prefix=" + prefix);
console.log("number=" + number);
const code = "bad";
const groups = /^([A-Z]+)-(\d+)$/.exec(code);
let prefix = "none";
let number = "none";
if (groups) {
prefix = groups[1];
number = groups[2];
}
console.log("code=" + code);
console.log("prefix=" + prefix);
console.log("number=" + number);
code ← AB-12, groups ← AB-12,AB,12, prefix ← none, number ← none
1const code→ AB-12 = "AB-12"; //@code="CD-34", "bad"2const groups→ AB-12,AB,12 = /^([A-Z]+)-(\d+)$/.exec(codeAB-12);3let prefix→ none = "none";4let number→ none = "none";if (groups)
3let prefix = "none";4let number = "none";56if (groupsAB-12,AB,12) {7 prefix = groups[1]AB;8 number = groups[2]12;9}console.log("code=" + code);
8 number = groups[2];9}1011console.log("code=" + codeAB-12);12console.log("prefix=" + prefixAB);13console.log("number=" + number12);outputcode=AB-12 prefix=AB number=12
code ← CD-34, groups ← CD-34,CD,34, prefix ← none, number ← none
1const code→ CD-34 = "CD-34";2const groups→ CD-34,CD,34 = /^([A-Z]+)-(\d+)$/.exec(codeCD-34);3let prefix→ none = "none";4let number→ none = "none";if (groups)
3let prefix = "none";4let number = "none";56if (groupsCD-34,CD,34) {7 prefix = groups[1]CD;8 number = groups[2]34;9}console.log("code=" + code);
8 number = groups[2];9}1011console.log("code=" + codeCD-34);12console.log("prefix=" + prefixCD);13console.log("number=" + number34);outputcode=CD-34 prefix=CD number=34
code ← bad, groups ← null, prefix ← none, number ← none
1const code→ bad = "bad";2const groups→ null = /^([A-Z]+)-(\d+)$/.exec(codebad);3let prefix→ none = "none";4let number→ none = "none";56if (groups) {7 prefix = groups[1];8 number = groups[2];9}1011console.log("code=" + codebad);12console.log("prefix=" + prefixnone);13console.log("number=" + numbernone);outputcode=bad prefix=none number=none