I devised the regular expression (see fiddle) /(\+|0|\()[\d()\s-]{6,20}\d/g to match phone numbers in the formats below.
(\+|0|\() is to match + or 0 or ( in the first place
[\d()\s-] is to match digits, brackets, spaces, hyphens in between
\d is to match a digit in the last place
+43 543 765 5434
0043 543 765 5434
0543 765 5434
+43 (0)543 765 5434
05437655434
0543-765-5434
Unfortunately this regex also matches numbers with linebreaks in between, like
"+43
654 416 4444" or
"stowasser09
65
808090"
I therefore thought of replacing
\sin the regex with[^\S\r\n]to match whitespaces but not linebreaks but couldn't get it to work?Also it would be nice to apply
{6,20}to the whole regex, not just the[\d()\s-]-part please? I imagine something like/((\+|0|\()[\d()\s-]\d){6,20}/g, i.e. the whole matched phone number should not be shorter than 6 and not longer than 20 characters, including the + | 0 | ( in the first place and the last digit.
Thank you!