簡體   English   中英

正則表達式:以分號分隔的域

[英]Regex : domains separated by semicolon

我需要一個正則表達式在具有以下結構的C#應用​​程序中使用:

  • 用分號分隔的域

有效示例:

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

我如何用一個Regex做到這一點?

考慮到我通常對正則表達式的厭惡,我被迫發布另一種選擇(基於這樣的事實:無論如何,您有時都需要將各個域表示形式作為單獨的實體):

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

其中delimitedDomains是采用上述格式的域字符串,結果是找到的每個單個域條目的數組。

您的方案中可能存在的情況要比詳細描述的情況多,但是,如果這是您的目標和投入的程度,那么這已經足夠了。

只是:

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

使用這個:

[^\;]+

可以嘗試

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

根據您是否想要特定的域名,可能必須更改它

您可以使用[^;] +,但C#具有split函數,可以很好地解決此問題(如果可以避免使用regex,我可以這樣做)

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

使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM