结合.net正则表达式

时间:2010-01-27 14:20:15

标签: c# .net regex

我正在尝试将两个.net正则表达式合并为一个。以下表达式验证excel,如单元名称。

Regex.IsMatch(name, @"^[A-Za-z]{1}[\w\.]*$") && 
    !Regex.IsMatch(name, @"^[A-Za-z]{1,2}\d+$");

第一部分确保单元名称以字符开头,可以是任意长度。第二个确保单元名称不是单元格引用;例如,A1,AA1,AA11等

2 个答案:

答案 0 :(得分:1)

以下可能有效:

^[A-Za-z](?![A-Za-z]?\d+$)[\w.]*$

由于第一个正则表达式必须匹配而第二个正则表达式必须匹配,所以我将第二个正则表达式的一部分移动到negative lookahead,它不会消耗匹配中的任何字符,但仍然会使RE拒绝字符串匹配第二个RE。

答案 1 :(得分:1)

我相信你可以取消对IsMatch的第二次调用,它应该没有什么区别。

Regex.IsMatch(name, @"^[A-Za-z]{1}[\w.]*$")

itsslef中的这种模式确保字符串中不存在数字(0 - 9),因此它应该足够了。