2013-02-26 61 views
2

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

这是我使用的方法:

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

是它的格式或RegExp需要特殊的图案?

+0

你测试什么值? – gmaliar 2013-02-26 12:46:57

+0

在这种情况下的特殊字符.. – faizanjehangir 2013-02-26 12:48:02

回答

3

你刚才添加的//字符串,这个工程:

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

虽然这是有效的JavaScript代码:

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

...它不会产生你认为的正则表达式。这是相同的:

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

你必须:

  • 地带定界符
  • 提取和分析flags,如果有的话,如:

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

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

+0

你的解释帮助我意识到我没有解析标志,谢谢你有详细的回复=) – afreeland 2013-03-27 14:05:26

相关问题