繁体   English   中英

尴尬的邮件和电话号码的C#正则表达式

[英]c# regex for awkward mail and phone number

我使用了下面找到的以下两个正则表达式:

  1. 10位电话号码,前后带有空格: @"(?<!\\d)\\d{10}(?!\\d)"

  2. 对于电子邮件:

 @"(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]? 

[0-9] {1,2} | 25 [0-5] | 2 [0-4] [0-9])。“ + @”([0-1]?[0-9] {1, 2} | 25 [0-5] | 2 [0-4] [0-9])([0-1] [0-9] {1,2} |。?25 [0-5] | 2 [ 0-4] [0-9])){1} |“ + @”([a-zA-Z] + [\\ w-] +。)+ [a-zA-Z] {2,4}) “;

电子邮件正则表达式适用于正常和正确的电子邮件地址,

但是我的输入文本实际上不是正常且正确的,所以我不得不为此引入另一种特殊性,我也想对其进行解析:

myname@this -email.com *or* myname@this- email.com *or* myname@this - email.com

10位数字的电话正则表达式仅提取数字的后9位,电话号码以0开头:

对于nr = 0123456789我只能得到:123456789,该电话号码出现在以下文本中: "some text here 0123456789 and some more here"

我还发现可以以这种形式找到10位数字: 012/3456789

  1. 我不认为您需要使用前瞻性来匹配您的电话号码。 您可以执行类似" (\\d[^0-9a-zA-Z]*?){9}\\d "以匹配长度恰好为10位数的数字,数字之间有任何垃圾(az字母除外) 。 但是要小心,它也要匹配" 012 à 3456789 "类的东西。 如果单个斜杠是唯一可能的分隔符,则可以使用" (\\d/?){9}\\d " :无误报,但不会匹配意外的分隔符。

  2. 关于电子邮件,官方完整的正则表达式相当长。 Gusdor的链接( http://www.regular-expressions.info/email.html )提供了一些上下文和一个简单的上下文,它应该几乎与实际使用的每个电子邮件地址匹配。 对其进行一些调整以匹配您的情况( this -domain.comthis- domain.org将被匹配),您可以使用类似以下的内容:

     [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*( *?- *)?[a-z0-9]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 

这里的自定义部分是( *?- *)? 添加到正确的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM