2

我有一个字符串形式的正则表达式,我想将该正则表达式绑定到我的网格单元格。这样,现在该单元格中的值将针对该正则表达式进行验证。我正在使用RegExpJavaScript 库进行转换和测试值。但它要么false每次都返回,要么给我一个invalid regex,即使对于使用的最简单的正则表达式也是如此。

这是我正在使用的方法:

addCellValidator(columnObj[0].name, new CellValidator({                 
    isValid: function (value) {
        var regex = new RegExp("/^[a-zA-Z\-]+$/");
        return value == "" || (regex.test(value)); 
    }
}));

它是所需的格式还是任何特殊模式RegExp

4

2 回答 2

6

虽然这是有效的 JavaScript 代码:

new RegExp("/^[a-zA-Z\-]+$/")

...它不会生成您认为的正则表达式。这相当于:

/\/^[a-zA-Z-]+$\//

你必须:

  • 带分隔符
  • 提取和解析标志,如果有的话,例如:

    "/^[a-z-]+$/i" ---> new RegExp("^[a-z-]+$", "i")
    

-还有一点需要注意:用反斜杠转义是没有意义的。如果要匹配-字符类中的文字,您需要将其作为第一项或最后一项。

于 2013-02-26T13:01:29.640 回答
3

您刚刚添加/ /到字符串,这有效:

addCellValidator(columnObj[0].name, new CellValidator({
                isValid: function (value) {
                    var regex = new RegExp("^[a-zA-Z\-]+$");
                    return value == "" || (regex.test(value)); }
            }));
于 2013-02-26T12:48:39.490 回答