2012-05-09 210 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”,尽管我会避免它为“ ,“因为人们可以很好地利用这个空间。