正则表达式:由分号分隔的域

时间:2011-03-08 13:20:25

标签: c# .net regex

我需要在具有以下结构的C#应用​​程序中使用正则表达式:

  • 以分号分隔的域名

有效示例:

domain1.com;domain2.org;subdomain.domain.net

如何使用单个正则表达式?

6 个答案:

答案 0 :(得分:3)

鉴于我对正则表达式的厌恶,我不得不发布一个替代方案(基于这样一个事实,即无论如何,您将需要将各个域表示作为单独的实体):

string[] domains = delimitedDomains.Split(';');

其中delimitedDomains是所提及格式的域名字符串,结果是找到的每个域条目的数组。

你的场景可能比精确细节更多,但是,如果这是你的目标和输入的范围,那么这应该足够了。

答案 1 :(得分:3)

只需:

var domains = example.Split(";".ToCharArray(), 
                  StringSplitoptions.RemoveEmptyEntries);

答案 2 :(得分:0)

使用这个:

[^\;]+

答案 3 :(得分:0)

可以尝试

^([^\.;]+\.[^\.;]+;)*$

根据您是否需要特定域名,您可能需要更改

答案 4 :(得分:0)

你可以使用[^;] +但是C#有一个拆分功能,可以很好地解决这个问题(如果你能避免使用正则表达式我会这样做)

http://coders-project.blogspot.com/2010/05/split-function-in-c.html

答案 5 :(得分:0)

使用Disappointment先生的建议,我不知道所有 Uri.IsWellFormedUriString 方法的作用,但理论上,如果你想在一个步骤中执行这两个步骤(分开并验证),我认为你可以使用LINQ做这样的事情:

(编辑它以使用Uri.CheckHostName而不是Uri.IsWellFormedUriString)

string src = "domain1.net;domain2.net; ...";
string[] domains = src.Split(';').Where(x => Uri.CheckHostName(x) != UriHostNameType.Unknown).ToArray();