1

我在用 Javascript 格式化 Regex 表达式以测试文本框中的值是否与您在 Excel 中看到的格式相匹配时遇到问题。

到目前为止,我有这个:

var equation = document.getElementById('functionBox').value;
var patt = new RegExp("=SUM\(.*\)");
if (patt.test(equation))
{
   //Continue operations
}

根据我的理解,这应该等同于只允许“=SUM()”的格式,但是如果你删除一个或两个括号,甚至在返回 false 之前删除 SUM 中的 M,它就会传递为 true。

我在这里是否缺少某些东西,或者我应该在代码中的其他地方查找问题。

另外,我现在知道这不会考虑单元格的格式,而是括号之间的;恐怕我不知道要完成,而且我尝试谷歌搜索的大多数正则表达式要么非常具体,要么只是列出修饰符而不给出任何示例。

4

1 回答 1

4

由于您使用的是字符串,因此您必须对括号进行双重转义:

var patt = new RegExp("=SUM\\(.*\\)");

为了便于阅读(以及更多原因),请使用文字正则表达式:

 var patt = /=SUM\(.*\)/;

PS您可以通过使用否定组来优化此正则表达式:

var patt = /=SUM\([^\)]*\)/;
于 2013-01-30T20:30:37.247 回答