如果网站 URL 不包含任何语言代码,则执行某些操作

Posted

技术标签:

【中文标题】如果网站 URL 不包含任何语言代码,则执行某些操作【英文标题】:if a website URL does not contain any language code then do something 【发布时间】: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 错误消息)。

【问题讨论】:

【参考方案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 块中的代码。

以上是关于如果网站 URL 不包含任何语言代码,则执行某些操作的主要内容,如果未能解决你的问题,请参考以下文章

如果url不包含特定字符,则htaccess重定向

如果 URL 不是 home/root,则 Javascript 代码不起作用

如果 telnet 输出包含某些内容,则执行操作

查找 2 列的空值的过程,如果为真,则使用这些行中的一些值来执行某些操作

不需要任何插件支持运行网页定时任务实现方法

Excel教程(14) - 文本和数据函数