natural vim +\?\d\+ integer vim [-+]\?\d\+ hundredths vim \<\%(\d\|[1-9]\d\)\> z_hundredths vim \<\d\{2}\> thousandths vim \<\%(\%{hundredths}\|[1-9]\d\d\)\> z_thousandths vim \<\d\{3}\> z_thousandths pcre \b[0-9]{3}\b _ip4_segment vim \%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\) _ip4_segment pcre (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) ip4 vim \<\%{_ip4_segment,4,.}\> ip4 pcre \b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b floating pcre /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ floating vim [-+]\?[0-9]*\.\?[0-9]\+\([eE][-+]\?[0-9]\+\)\? phone_number vim # multiline ^ \%( \(\d\) # prefix_digit [\ \-\.]\? # optional_separator \)\? \%( (\?\(\d\{3}\))\? # area_code [\ \-\.] # separator \)\? \(\d\{3}\) # trunk [\ \-\.] # separator \(\d\{4}\) # line \%(:\ \?x\? # optional_space_or_x \(\d\+\) # extension \)\? $ phone_number pcre # multiline /^ (?: (?\d) # prefix digit [ \-\.]? # optional separator )? (?: \(?(?\d{3})\)? # area code [ \-\.] # separator )? (?\d{3}) # trunk [ \-\.] # separator (?\d{4}) # line (?:\ ?x? # optional space or 'x' (?\d+) # extension )? $/x