正则表达式以排除特定模式匹配

时间:2014-04-24 12:12:11

标签: c# regex

我需要一个正则表达式来匹配电话号码但不是“ [1398340387] ” - [10digits] pattern

我有这个正则表达式来识别电话号码,但这也匹配[1398340387]我想逃脱。

1?\s*\W?\s*(\d{3})\s*\W?\s*(\d{3})\s*\W?\s*(\d{4})(\se?x?t?(\d*))?

上下文:

我有一个字符串,可能包含电话号码和[1398340387]:unix时间戳,如果找到,我需要突出显示所有电话号码。现在,Unix时间戳也被识别为电话号并突出显示,我需要避免这种情况。

示例字符串

  

[1398337818] *对话开始* 与'yash'[1398337818]   山姆:电话号码:1-234-567-8901 1-234-567-8901 x1234   1-234-567-8901 ext1234 1(234)567-8901   1.234.567.8901 1/234/567/8901  12345678901 [1398337818] sam:你好[1398337905] sam:信用卡1111-2222-3333-4444 [1398338242]

我应该添加什么来逃避后期的部分?

谢谢

1 个答案:

答案 0 :(得分:2)

以下正则表达式仅匹配示例中的手机:

\b1\s*[-/\.]?\(?\d{3}\)?\s*[-/\.]?\d{3}[-/\.]?\d{4}(\s+(x|ext)\d{4})?\b

Regular expression visualization

Debuggex Demo