【问题标题】:if a website URL does not contain any language code then do something如果网站 URL 不包含任何语言代码,则执行某些操作
【发布时间】:2019-07-18 04:35:00
【问题描述】:

这里是 ASP.Net C# 新手。我正在寻找有关构建条件以验证网站 URL 是否不包含任何 ISO 语言代码或区域子目录的建议,例如/us-en、/ae-en、/gb-en 等使用正则表达式。

示例网站网址:
• 带有语言代码的网站 URL - https://www.xbox.com/en-US/xbox-one?xr=shellnav
• 没有语言代码的网站 URL - https://www.xbox.com/xbox-one?xr=shellnav

示例场景:
• 不得访问没有任何 ISO 语言代码的网站 URL,并显示页面未找到或 404 错误消息。

如果建议是否定的,那就更好了——如果网站 URL 不包含任何 ISO 语言代码,它将执行语句中的代码块(找不到页面或 404 错误消息)。

【问题讨论】:

    标签: c# asp.net regex args url-masking


    【解决方案1】:

    只需使用此正则表达式匹配 URL,

    \b[a-z]{2}-[A-Z]{2}\b
    

    Demo

    如果您希望它不区分大小写,只需在正则表达式的开头附加(?i)

    (?i)\b[a-z]{2}-[a-z]{2}\b
    

    查看这段打印 URL 是否匹配的 C# 代码,

    List<string> strings = new List<string>();
    strings.Add("https://www.xbox.com/en-US/xbox-one?xr=shellnav");
    strings.Add("https://www.xbox.com/xbox-one?xr=shellnav");
    
    var regex = new Regex(@"\b[a-z]{2}-[A-Z]{2}\b");
    
    foreach (string s in strings)
    {
        if (regex.Match(s).Success) {
            Console.WriteLine(s + " --> Matches");  // Write your code here if URL contains language code
        } else {
            Console.WriteLine(s + " --> Doesn't match"); // Else part if URL doesn't contains language code
        }
    }
    

    打印,

    https://www.xbox.com/en-US/xbox-one?xr=shellnav --> Matches
    https://www.xbox.com/xbox-one?xr=shellnav --> Doesn't match
    

    【讨论】:

    • 嗨 Pushpesh - 感谢您的回复。你能告诉我方法吗?我的意思是代码上的实际检查条件。
    • @hotcheesepotato:嘿,伙计,刚刚添加了一个显示该方法的 C# 示例代码。希望对您有所帮助。
    • @hotcheesepotato:检查我更新的 C# 代码,因为我已经使它更清晰和直观。
    • 这很酷,伙计。但是,是否有可能只采用消极的方法?我的意思是当 URL 不包含也不匹配这个正则表达式时: (?i)\b[az]{2}-[az]{2}\b 它将执行语句中的代码块(无论 URL 何时包含或匹配正则表达式)。
    • 要获得否定的方法,您可以使用否定的前瞻正则表达式^(?!.*\b[a-z]{2}-[A-Z]{2}\b).*$ 或代码明智的你可以交换if else 块中的代码。
    猜你喜欢
    • 2015-11-18
    • 2022-11-10
    • 2023-03-09
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多