Skip to main content
 首页 » 编程设计

c#之卡在正则表达式中以检测 C# 中特定域的 URL

2024年02月20日28freeliver54

我正在尝试找出属于 :

的 URL
http://domain.blob.core.windows.net/  
https://domain.blob.core.windows.net/ 
 
http://domain.blob.core.windows.net 
https://domain.blob.core.windows.net 

我写的正则表达式

Regex reg2= new Regex(@"^http(s?)://[0-9a-zA-Z](.blob.core.windows.net)(/?)$"); 
string url = "http://abc.blob.core.windows.net"; 
        if(reg2.IsMatch(url)) 
        { 
            Console.WriteLine("Yes"); 
        } 
        else 
        { 
            Console.WriteLine("no"); 
        } 

我找不到匹配项。它不起作用 :( 我在正则表达式方面很弱。所以任何人都可以帮我找出我的错误吗?我正在使用 c#。它总是打印不。

更新:对我有用的最终答案:

Regex reg2 = new Regex(@"^http(s?)\:\/\/[0-9a-zA-Z]*(\.blob\.core\.windows\.net) 
(/?)$"); 

以防万一有人需要这样的东西:)

请您参考如下方法:

你接近 "^http(s?)://[0-9a-zA-Z](.blob.core.windows.net)(/?)$" 然而[0-9a-zA-Z] 应该是 [0-9a-zA-Z]+ 因为你想在 .blob.core 之前是多个字符.windows.net 不只是一个字符。

注意:如果您不捕获部分匹配项,则此处不需要括号,可选运算符仅应用于前一个字符,因此 ^https?$ 匹配 'http' 或 'https' 而不是 '' 因为只有 s 是可选的,还要转义所有 . characters as in regex . characters matches any single character so to match a literal . 你想要 \. .

"^https?://[0-9a-zA-Z]+\.blob\.core\.windows\.net/?$"