域名验证正则表达式 - 如何扩展到多行验证?

时间:2012-06-22 21:59:02

标签: c# regex asp.net-mvc asp.net-mvc-3 validation

这是我目前的情况;我是一个接近完全正则表达的文盲,并且我们的任务是扩展我们的网站片段,该网站向用户请求客户帐户的域名。现在它是一行,一个域名,下面的正则表达式很好。

(?i)^(?!.{257,})(?!.*-\\.)(?!.*?-\\.)(?:[a-zA-Z0-9-]{1,64}\\.)+(?:[a-zA-Z]{2,6})\\b

我需要做的是允许用户在框中输入多个域名。每行一个。基本上我需要做的就是包装这个正则表达式,以便逐行应用验证,而不是整个集合。

我知道这件事使用了负面的预测,虽然那些我没有真正的想法。我发现的每一个教程似乎都将这些想法放在了我需要的概念之上。我本周末可以学习的任何想法,链接或评论都将非常受欢迎。

顺便说一下,我在.Net MVC 3.0中实现了这个。

谢谢!

1 个答案:

答案 0 :(得分:1)

许多Regexp框架提供了一组扩展选项,可以修改匹配的整体行为。

以下两个链接包含.NET和Javascript的引用:

在这两种情况下,如果将整个多行字符串输入到正则表达式中,则 m 选项可能就是您要查找的内容。

另外,就负面预测而言,Python regexp模块的这个小片段给出了一个简洁的例子(来自Python Regex Module):

  

(?!...)

     

匹配如果......下一个不匹配。这是一个负面的先行断言。例如,Isaac(?!Asimov)只有在没有'Asimov'的情况下才会匹配'Isaac'。