URL的正则表达式具有一些特殊性

时间:2013-11-11 12:00:28

标签: .net regex twitter

我正在尝试为Twitter理解的有效网址设置正则表达式,具有以下特征:

  • 可能只有valid domain extensions
  • 它可以以http://或https://或无
  • 开头
  • 如果它不是通过http://开始,也不是通过https://开始,则在以下情况下计为有效域名:
    • 这是一个有效的域名扩展名,它有超过2个字母(.com,.org等)
    • 这是一个有效的域名扩展名,包含2个字母,在大写字母(.CO,.ES等)中写入

所以,我现在的问题是,对于带有 http 的网址,我有单独的正则表达式,没有它, http://example.com 计算两次,一次 http 正则表达式用于非http 正则表达式,这个应该包含一个术语来排除http和https,这里是我失败的地方,如"(http:\/\/|https:\/\/){0}"或{ {1}}。

基本上这个问题简化为:如何在 http前缀URLS正则表达式的正则表达式中计算http://example.com并避免在非http前缀URLS正则表达式中,这是,避免计算example.com

我的代码:

"^(http:\/\/)"

2 个答案:

答案 0 :(得分:0)

我会创建一个替代, 第一种情况是http(s)-case,第二种情况是非http(s),我在那里检查URL是否包含域条件。 像这样:

(\A(?!=http)[your regex]|\A(?=.*\.(CO|ES|com|org))http[your regex])

(?=。*。(CO | ES | com | org))预测检查字符串中某处是否有CO ES等,而不是“吃掉它”。

答案 1 :(得分:0)

最后,我必须将正则表达式与Substring结合起来,因为没有找到在正则表达式中执行此操作的方法。更多信息here