如果网站 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 不是 home/root,则 Javascript 代码不起作用