using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b
\+?1?
(?<separator>\s|-|\.)?
(?: # area code with optional parentheses
(?<area_code>[2-9][0-8]\d)
|\((?&area_code)\)
)
(?&separator)?
(?: # exchange
(?!555)
[2-9]
(?!11)\d\d
)
(?&separator)?
\d{4} # line
\b";
string input = @"212 718-1234
(212)718-1234
(212) 718-1234
1(212)718-1234
1-212-718-1234
1.212.718.1234
+1-212-718-1234
+1.212.718.1234
1-212-718-1234
+1 (212) 718-1234
# 1-VALID 2-VALID 4-VALID
231 212 1234
234-235-5678 is a valid telephone number with area code 234, central office prefix (exchange) 235, and line number 5678.
12127181234
(212)7181234
# 1-INVALID 2-INVALID 4-INVALID
091 012 1234
# 1-INVALID 2-VALID 4-INVALID
081 012 1234
171 012 1234
# 1-VALID 2-VALID 4-INVALID
231 012 1234
# 1-INVALID 2-INVALID 4-VALID
091 212 1234
# 1-INVALID 2-VALID 4-VALID
081 212 1234
171 212 1234
231 555 1234
867-5309 missing area code
The number 234-911-5678 is invalid, because the central office code must not be in the form N11. 314-159-2653 is invalid, because the office code must not begin with 1. 123-234-5678 is invalid, because the NPA must not begin with 0 or 1.
1 212) 718 1234
121271812341212718123412127181234";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx