2011-02-08 57 views
2

我想验证Excel工作表公式中的单元格引用。如何验证包含工作表名称的Excel单元格引用?

有效的字符串:

  1. Sheet1!A1
  2. 'Sheet!!'!A1

我使用下面的表达式,但它无法正常工作。

"^='?[^[]/\*]*'?!+[A-Z]+[0-9]+$" 
+1

你可以发布你的代码吗? – 2011-02-08 11:09:12

+2

我们有两种主要的正则表达式问题:“请发送正则表达式codez”和“正则表达式不工作”。让我们把它变成第三种。它无法匹配有效的输入吗?它接受一些无效的输入吗?哪个? “不工作”不是问题描述。 – 2011-02-08 11:10:50

+0

什么是双引号?他们是正则表达式的一部分吗?他们是字符串分隔符吗?如果它们是字符串分隔符,则应该使用逐字字符串而不是常规字符串。在编写路径和正则表达式时,人们甚至不会考虑它:从一开始就逐字串。您不应该使用JavaScript正则表达式验证程序来测试.NET正则表达式。正则表达式根据平台/语言/库而有各种不同的风格。要验证.NET正则表达式,您应该使用.NET。我建议你试试[LinqPad](http://www.linqpad.net/)。 – 2011-02-08 11:16:31

回答

1

哦还有一些问题。 ?

它现在

^='?[^/\[]*]*'?!{1}[A-Z]+[0-9]+$ 
0

工作这个应该工作: =(\ S | \ W)+ [A-ZA-Z] + \ d +

3
Regex re = new Regex(@"^=('?[^']+'?|[^!]+)![A-Z]+[0-9]+$"); 
bool isOk = re.IsMatch("=Sheet1!A1"); 

更改! [^!]表示表单名称中不需要的任何字符。

它将匹配任何格式为='<anything>'!XN=<anything>!XN其中X至少为一个大写字母,而N至少为一位。

编辑: 我不知道,如果想OP在启动或不=字符(原帖有它)。如果您不这样做,请从正则表达式的开头删除=字符。

相关问题