[英]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.