const regex = /^\+?(?![^ \n-]*[ -]{2})(?=(?:[ -]*\d){10,12}$)\d[\d -]*\d$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^\\+?(?![^ \\n-]*[ -]{2})(?=(?:[ -]*\\d){10,12}$)\\d[\\d -]*\\d$', 'gm')
const str = `+12 1234567890
+12 12 345 567 89
+12 123-455-6789
+9712345567
Additional good
9712345567
Additional bad
+9712345- - 567
+9712345678
+9712345678
+ 9712345678
+97--12345678
+1234567890123
+123456789
The regex is for validating phone numbers so it should have minimum length 10 digits and maximum length of 12 digits except special symbols like +, - and space.
Plus sign only allowed at start. I tried below regex but not working for me.`;
// 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