const regex = /^(?=(?:\+|0{2})?(?:(?:[\(\-\)\.\/ \t\f]*\d){7,10})?(?:[\-\.\/ \t\f]?\d{2,3})(?:[\-\s]?[ext]{1,3}[\-\.\/ \t\f]?\d{1,4})?$)((?:\+|0{2})\d{0,3})?(?:[\-\.\/ \t\f]?)(\(0\d[ ]?\d{0,4}\)|\(\d{0,4}\)|\d{0,4})(?:[\-\.\/ \t\f]{0,2}\d){3,8}(?:[\-\s]?(?:x|ext)[\-\t\f ]?(\d{1,4}))?$/mgi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(?=(?:\\+|0{2})?(?:(?:[\\(\\-\\)\\.\\\/ \\t\\f]*\\d){7,10})?(?:[\\-\\.\\\/ \\t\\f]?\\d{2,3})(?:[\\-\\s]?[ext]{1,3}[\\-\\.\\\/ \\t\\f]?\\d{1,4})?$)((?:\\+|0{2})\\d{0,3})?(?:[\\-\\.\\\/ \\t\\f]?)(\\(0\\d[ ]?\\d{0,4}\\)|\\(\\d{0,4}\\)|\\d{0,4})(?:[\\-\\.\\\/ \\t\\f]{0,2}\\d){3,8}(?:[\\-\\s]?(?:x|ext)[\\-\\t\\f ]?(\\d{1,4}))?$', 'mgi')
const str = `958698283
958 68 82 83
958-68-82-83
958 698 283
958-698-283
+34958698283
+34 958 69 82 83
+34-958-69-82-83
+34 958 698 283
+34-958-698-283
911
123456789
12345678
1234567890123
001231234567890
0012312345678901
123456789012
1234
0091234567890
+9 123-4567890-x321
+9-123-456-7890
+9 123 4 5 6-7890x1234
009-(123)-456-7890 ext4321
0091234567890x1234
+9-123-456-7890x12345
+9-123-456-7890 ext 1234
00123-(4321)-567.89 ext-4321
0027-123-456-7890
+27-123-456-7890
+9(123)4567890
(01 55) 1234 5678
(01 551) 12345678
+49 (1234) 567890
(0)123456789
+34123456789
+34 (0)123456789
+340123456789
+34 123 456 789
+34 1 23 45 67 89
001230123456789
ext1234
++34123456789
00-0-----000
01 555012345
001-555012345
+012345678
112
12(34567890
123)456789012345
1-234-567-8901
+1-234-567-8901 x1234
0011-234-567-8901 ext1234
)234( 567 8901
(234) 567 8901
+11 (234) 567-8901
+1.234.567.8901
+1/234/567/8901
12345678901
2345678901
`;
// 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