Validate/extract US Phone numbers with .net regular expression out of mixed character 值
Validate/extract US Phone numbers with .net regular expression out of mixed character value
我需要一个 .net 的正则表达式,它可以从混合字符值中提取 phone 数字,例如以下示例:
yyy1-555-555-5555yyy1
yyy555-555-5555yyy1
yyy1(555)555-5555yyy1
yyy5555555555yyy1
yyy1-(555)-555-5555yyy1
yyy1(555)-555-5555yyy1
yyy(555)555-5555yyy1
模式 ^\+?([0-9]+[ -]?){5,}[0-9]+$
看起来非常基本并且工作得很好,但它不适用于 phone 数字可以显示的所有不同方式,如上所示。
我对正则表达式还很陌生,这似乎有很多问题要问,但如果有人能相对容易地做到这一点,我将不胜感激。
您可以使用以下正则表达式来完成:
(?:1-?)?\(?\d{3}\)?[-.]?\s*\d{3}[-.]?\s*\d{4}
或 "boundaries":
(?<!\d)(?:1-?)?\(?\d{3}\)?[-.]?\s*\d{3}[-.]?\s*\d{4}(?!\d)
正则表达式解释:
(?:1-?)?
- 1
和可选连字符 的可选(1 或零)序列
\(?\d{3}\)?
- 可选择用 (...)
括起来的 3 位数字序列
[-.]?
- 可选分隔符(-
或 .
,必要时添加更多)
\s*
- 0个或更多空格(如果需要排除换行符,使用\p{Zs}
)
\d{3}
- 3 位数字序列
[-.]?
- 1 或 0 个分隔符
\s*
- 0 个或更多空格
\d{4}
- 4 位数字序列。
环视 (?<!\d)
和 (?!\d)
,仅当整个模式未包含数字时才允许匹配。
我需要一个 .net 的正则表达式,它可以从混合字符值中提取 phone 数字,例如以下示例:
yyy1-555-555-5555yyy1
yyy555-555-5555yyy1
yyy1(555)555-5555yyy1
yyy5555555555yyy1
yyy1-(555)-555-5555yyy1
yyy1(555)-555-5555yyy1
yyy(555)555-5555yyy1
模式 ^\+?([0-9]+[ -]?){5,}[0-9]+$
看起来非常基本并且工作得很好,但它不适用于 phone 数字可以显示的所有不同方式,如上所示。
我对正则表达式还很陌生,这似乎有很多问题要问,但如果有人能相对容易地做到这一点,我将不胜感激。
您可以使用以下正则表达式来完成:
(?:1-?)?\(?\d{3}\)?[-.]?\s*\d{3}[-.]?\s*\d{4}
或 "boundaries":
(?<!\d)(?:1-?)?\(?\d{3}\)?[-.]?\s*\d{3}[-.]?\s*\d{4}(?!\d)
正则表达式解释:
(?:1-?)?
-1
和可选连字符 的可选(1 或零)序列
\(?\d{3}\)?
- 可选择用(...)
括起来的 3 位数字序列
[-.]?
- 可选分隔符(-
或.
,必要时添加更多)\s*
- 0个或更多空格(如果需要排除换行符,使用\p{Zs}
)\d{3}
- 3 位数字序列[-.]?
- 1 或 0 个分隔符\s*
- 0 个或更多空格\d{4}
- 4 位数字序列。
环视 (?<!\d)
和 (?!\d)
,仅当整个模式未包含数字时才允许匹配。