0

我正在使用这个正则表达式:[a-zA-Z0-9\-.,:+*()=\'&_],但我收到类似:'unterminated character class' error in this expression'的错误:

演示代码:

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.当我们在组合框中输入所需的字符时,它们会被自动选择..所以当我们想输入新字符时,我们必须按侧箭头,否则剩余的字符将被删除......

再次感谢,

拉吉

4

3 回答 3

1

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

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

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

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

于 2012-04-12T04:54:38.540 回答
0

在正则表达式中,您需要转义 11 个字符:左方括号 [、反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或管道符号 |、问号 ?、星号或星号 *、加号 +、左圆括号(和右圆括号)。

于 2012-04-12T04:59:15.037 回答
0

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

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

括号、加号、星号和反斜杠是正则表达式中具有特殊含义的许多字符中的一部分。为了从字面上包含它们,您需要用反斜杠转义它们。

于 2012-04-12T05:02:28.383 回答