如何在正则表达式extjs中使用'\'

时间:2012-04-12 04:50:35

标签: javascript regex extjs extjs3

我正在使用这个正则表达式:[a-zA-Z0-9 \ - 。,:+ *()= \'& _],但我得到的错误如下:'unterminated character class'错误表达':

演示代码:

Ext.getCmp('field2').addListener({
        beforequery: function (e) {
            if (e.query && e.query.indexOf('?') != -1) {
                var temp = '';
                for(var i=0;i<e.query.length;i++){
                    temp = temp + '['+e.query[i]+ ']';
                }
                e.cancel = true;
                var query = new RegExp(String.format('^{0}',temp.replace(/\?/g, 'a-zA-Z0-9\.,:\+*()=\'&_-\\')));
                this.expand();
                this.store.clearFilter(true);
                this.store.filter(this.displayField, query);
            }
        }
    });

错误:

1.请有人告诉我这是错误的,主要是反斜杠。

2.当我们在组合框中输入所需的字符时,它们会被自动选中..因此,当我们想要输入新字符时,我们必须按侧箭头或者其他字符被删除...

再次感谢,

拉​​吉

3 个答案:

答案 0 :(得分:1)

我认为你必须逃避角色类中的一些项目。就像你的反斜杠,星号,加号,括号和句号一样。

像这样[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]

在正则表达式中为特殊字符[\^$.|?*+(){}添加反斜杠会抑制它们的特殊含义,允许您按字面意思使用它们。

http://www.regular-expressions.info/reference.html

答案 1 :(得分:0)

在正则表达式中有11个字符需要转义:开口方括号[,反斜杠\,插入符号^,美元符号$,句点或点。,垂直条或管道符号|,问题标记?,星号或星号*,加号+,开口圆括号(和结束圆括号)。

答案 2 :(得分:0)

您需要转义正则表达式中的某些字符。所以它看起来像:

var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/;  // Note the backslashes

圆括号,加号,星号和反斜杠是正则表达式中具有特殊含义的许多字符中的一些。为了按字面意思包含它们,你需要用反斜杠来逃避它们。