2012-05-09 209 views
0

最初我有以下問題:正則表達式匹配前綴

在文本框中添加多個GroupName。

  1. 的組名可以通過","/"or"/"OR"分離。
  2. 輸入不應開始或","/"or"/"OR"結束。

如:

 
GroupName, GroupName or GroupName OR GroupName 
GroupName, GroupName, GroupName, GroupName or GroupName 

爲此,我找到了答案爲

/^[a-zA-Z0-9\s]+(?:\s*(?:or|OR|,)\s*[a-zA-Z0-9\s]+)*$/ 

如何修改這個reqular表達支持orOR關鍵字作爲前綴。也不能有兩個連續的前綴,如:

 
or or GroupName 

(上面的例子是無效的輸入。)

誰能幫助我在這?提前致謝。

回答

1

爲什麼不使用Regex.Split,然後把它簡化所以你的模式是唯一的記號?

所以,你會說,像

string[] substrings = Regex.Split(input, "[\w]?(OR|,)[\w]?", RegexOptions.IgnoreCase); 

然後就丟棄空字符串,而不是擔心防止空項。這種做法,順便說一句,將拔出分隔符到結果陣列,因爲它們是捕獲組,但鏈接的文檔說明如何避免這種情況。另外,因爲它忽略了空格,所以你可能想強制將空格匹配爲「或」運算符,因爲它忽略了「俄勒岡」這樣的結果,如「OR」和「Egon」,儘管我會避免它爲「 ,「因爲人們可以很好地利用這個空間。