我想验证Excel工作表公式中的单元格引用。如何验证包含工作表名称的Excel单元格引用?
有效的字符串:
Sheet1!A1
'Sheet!!'!A1
我使用下面的表达式,但它无法正常工作。
"^='?[^[]/\*]*'?!+[A-Z]+[0-9]+$"
我想验证Excel工作表公式中的单元格引用。如何验证包含工作表名称的Excel单元格引用?
有效的字符串:
Sheet1!A1
'Sheet!!'!A1
我使用下面的表达式,但它无法正常工作。
"^='?[^[]/\*]*'?!+[A-Z]+[0-9]+$"
哦还有一些问题。 ?
它现在
^='?[^/\[]*]*'?!{1}[A-Z]+[0-9]+$
工作这个应该工作: =(\ S | \ W)+ [A-ZA-Z] + \ d +
Regex re = new Regex(@"^=('?[^']+'?|[^!]+)![A-Z]+[0-9]+$");
bool isOk = re.IsMatch("=Sheet1!A1");
更改! [^!]
表示表单名称中不需要的任何字符。
它将匹配任何格式为='<anything>'!XN
或=<anything>!XN
其中X至少为一个大写字母,而N至少为一位。
编辑: 我不知道,如果想OP在启动或不=
字符(原帖有它)。如果您不这样做,请从正则表达式的开头删除=
字符。
你可以发布你的代码吗? – 2011-02-08 11:09:12
我们有两种主要的正则表达式问题:“请发送正则表达式codez”和“正则表达式不工作”。让我们把它变成第三种。它无法匹配有效的输入吗?它接受一些无效的输入吗?哪个? “不工作”不是问题描述。 – 2011-02-08 11:10:50
什么是双引号?他们是正则表达式的一部分吗?他们是字符串分隔符吗?如果它们是字符串分隔符,则应该使用逐字字符串而不是常规字符串。在编写路径和正则表达式时,人们甚至不会考虑它:从一开始就逐字串。您不应该使用JavaScript正则表达式验证程序来测试.NET正则表达式。正则表达式根据平台/语言/库而有各种不同的风格。要验证.NET正则表达式,您应该使用.NET。我建议你试试[LinqPad](http://www.linqpad.net/)。 – 2011-02-08 11:16:31