const regex = /^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]), (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]), (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]), (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]), (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$', 'gm')
const str = `Min val is 0. Leading zeros don't
match unless the value is 0.
0, 0, 0
00, 0, 0
0, 0, 00
Max numeric number is 255, anything
larger than 255 will not match.
255, 255, 255
255, 255, 256
4-Digit numbers will not match
1, 11, 111
11, 111, 1111
dangling commas do not match
45, 67, 89
45, 67, 89,
Obviously if a dangling comma doesn't
match, neither will 4 numbers.
1, 2, 3
1, 2, 3, 4
Two numbers do not match, and adding a space,
or space & comma, doesn't match either.
0, 1, 2
0, 1
0, 1,
0, 1,
Single numbers do not match; adding a space &/or
comma, will not cause the single number to match.
9, 9, 9
9
9,
9, `;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions