C# 创建url正则表达式以解析域名

C# 创建url正则表达式以解析域名,c#,javascript,regex,expression,C#,Javascript,Regex,Expression,我需要创建一个正则表达式来识别一个字符串,如果这是一个符合我标准的url,但是我在识别域名时遇到了麻烦 域名的标准是 只有[a-z][0-9],和- 第一个字符必须是[a-z] 在或-之前和之后必须是[a-z] 最小长度1个字符 并且域区域是 只有[a-z]和 第一个字符必须是 最小长度3个字符 格式应为www.. 这是我得到的 www.[a-z]([a-z0-9\.\-]{1,}[a-z][\.\-])+[^\.+\-].[a-z+\.]{2,}[^\.]$ 这是域名 [a-z]([a-z0

我需要创建一个正则表达式来识别一个字符串,如果这是一个符合我标准的url,但是我在识别域名时遇到了麻烦

域名的标准是

  • 只有
    [a-z][0-9]
    -
  • 第一个字符必须是
    [a-z]
  • -
    之前和之后必须是
    [a-z]
  • 最小长度1个字符
  • 并且域区域是

  • 只有
    [a-z]
  • 第一个字符必须是
  • 最小长度3个字符
  • 格式应为
    www..

    这是我得到的

    www.[a-z]([a-z0-9\.\-]{1,}[a-z][\.\-])+[^\.+\-].[a-z+\.]{2,}[^\.]$
    
    这是域名

    [a-z]([a-z0-9\.\-]{1,}[a-z][\.\-])+[^\.+\-]
    
    这是针对域区域的

    .[a-z+\.]{2,}[^\.]$
    
    这将是
    www.sample.com.sg

    • www.sample.com
      将被拒绝,因为
      。sample
    • www.sample..com
      将被拒绝,因为
      sample.
    • www.sample.com.sg.
      将被拒绝,因为
      .com.sg.
    • www.sampl3.sample.com
      将被拒绝,因为
      sampl3.
      规则编号3
    不重新发明

    • URI.js:
    • URL解析器:
    像这样的事情已经做了很多次了,最好利用现有的代码,而不是重新学习所有的URL规则和规范要求。

    • URI.js:
    • URL解析器:

    像这样的事情已经做了很多次,最好利用现有的代码,而不是重新学习所有的URL规则和规范要求。

    试试这个:^[a-zA-Z0-9-.]+(com | org | net | mil | edu | com | org | net | mil edu)$
    我还没有预先测试过它,所以可能需要的法规很少

    试试这个:^[a-zA-Z0-9-.]+(com | org | net | mil | edu | com | org | net | mil edu)$ 我没有预先测试过,所以可能需要的法规很少

    编辑:

    www\.(([a-z][a-z0-9]*)?[a-z][\.\-])*([a-z][a-z0-9]*)?[a-z]\.[a-z]{2,}$
    
    很长时间了,也许还有更好的,但是…

    编辑:

    www\.(([a-z][a-z0-9]*)?[a-z][\.\-])*([a-z][a-z0-9]*)?[a-z]\.[a-z]{2,}$
    


    很长时间了,也许还有更好的,但是…

    这里是一个开始:
    www\[a-z]([.-][a-z]|[a-z0-9])+
    你确定规则3吗?
    all-4-one.com
    有什么问题吗?谢谢。。4.你的反应很快。。但在域名的末尾,它不能是“.”或“-”。。我如何验证这一点?犯错误我不认为这是一个很好的识别url的标准,但我得到了一个作业,这是我的讲师给出的标准。。这就是为什么…哈哈哈…这只是一个开始。它应该把你带到TLD,但不是你的额外规则,只有字母周围的连字符。哈哈哈。。对那是真的。。有了这些额外的规则,这就不可能是TLD了。@@这里是一个开始:
    www\[a-z]([.-][a-z]|[a-z0-9])+
    你确定规则3吗?
    all-4-one.com
    有什么问题吗?谢谢。。4.你的反应很快。。但在域名的末尾,它不能是“.”或“-”。。我如何验证这一点?犯错误我不认为这是一个很好的识别url的标准,但我得到了一个作业,这是我的讲师给出的标准。。这就是为什么…哈哈哈…这只是一个开始。它应该把你带到TLD,但不是你的额外规则,只有字母周围的连字符。哈哈哈。。对那是真的。。有了这些额外的规则,这就不可能是TLD了..@@嗯。。我以前见过这种代码。。但我必须遵循我上面描述的标准。无论如何,感谢您的回答。Dcom/org等无法匹配美国以外的任何东西。欧盟,.co.uk,.it。它甚至会在一些常见的事情上失败,比如。我,比特。利等等。是的。。这只是你提到的域名(com | org | net | mil | edu | com | org | net | mil | edu)。。除此之外,你会失败的。。我以前见过这种代码。。但我必须遵循我上面描述的标准。无论如何,感谢您的回答。Dcom/org等无法匹配美国以外的任何东西。欧盟,.co.uk,.it。它甚至会在一些常见的事情上失败,比如。我,比特。利等等。是的。。这只是你提到的域名(com | org | net | mil | edu | com | org | net | mil | edu)。。除此之外,我们将失败是的。。这将是一个很好的方法,以更简单的方式识别url。但我必须使用正则表达式。。所以谢谢你回答…染料。。这将是一个很好的方法,以更简单的方式识别url。但我必须使用正则表达式。。thx回答:DYeah,我错过了域名必须以[a-z]开头的提示,但是否不止这些?我将编辑regExp。在[\.\-]部分之前和之后缺少[a-z]部分,哈哈哈。。。对并且域名的最后一个不能是。或-。。以前不可能有数字。还有-…@@如果是这样的[a-z]([a-z]+[0-9]*[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z].\.\-]+我真的不明白什么?意思是@@是的,我错过了域名必须以[a-z]开头的规则,但它不止这些吗?我将编辑regExp。在[\.\-]部分之前和之后缺少[a-z]部分,哈哈哈。。。对并且域名的最后一个不能是。或-。。以前不可能有数字。还有-…@@如果是这样的[a-z]([a-z]+[0-9]*[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z]+[a-z].\.\-]+我真的不明白什么?意思是@@