2012-06-22 40 views
0

這是我目前的情況;我是一個近乎完整的正規文盲,並且負責擴展我們網站的一部分,要求用戶爲客戶帳戶提供域名。現在它是一行,一個域名,下面的正則表達式很好。域名驗證正則表達式 - 如何擴展到多行驗證?

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

我需要做的是允許用戶在框中輸入多個域名。每行一個。基本上我需要做的就是包裝這個正則表達式,以便逐行應用驗證,而不是整個集合。

我知道這件事情使用負面展望未來,但那些是我沒有真正的想法。我發現每篇教程似乎都將我需要的概念概括爲思路。任何想法,鏈接或評論,我可以在這個週末學習將不勝感激。

順便說一下,我在.Net MVC 3.0中實現了這一點。

謝謝!

+2

似乎最簡單的做法是將每行的域列表拆分爲一個列表,然後分別在每個域上運行現有的正則表達式。這樣,如果一個人無效,你可以告訴他們XX行上的域是無效的,而如果你試圖將這個工作放在一個巨大的列表中,你不會輕易地告訴它失敗的地方。 – drew010

+0

這就是我最終做的,成功的。另外,因爲我改變了我的看法,所以我的UI設計看起來很完美。 –

回答

1

許多Regexp框架提供了一組擴展選項,用於修改匹配的整體行爲。

以下兩個鏈接包含了.NET和Javascript引用:

在這兩種情況下,的選擇可能是你在找什麼,如果整個多行字符串被輸入正則表達式。

而且,只要負查找aheads而言,從Python正則表達式模塊這個小片段給出了一個簡潔的例子(從Python Regex Module):

(...?!)

匹配,如果...不匹配。這是一個負面的前瞻斷言。例如,Isaac(?!Asimov)只有在沒有跟隨'Asimov'時纔會匹配'Isaac'。