我正在使用这个正则表达式:[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.当我们在组合框中输入所需的字符时,它们会被自动选中..因此,当我们想要输入新字符时,我们必须按侧箭头或者其他字符被删除...
再次感谢,
拉吉
答案 0 :(得分:1)
我认为你必须逃避角色类中的一些项目。就像你的反斜杠,星号,加号,括号和句号一样。
像这样[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]
在正则表达式中为特殊字符[\^$.|?*+(){}
添加反斜杠会抑制它们的特殊含义,允许您按字面意思使用它们。
答案 1 :(得分:0)
在正则表达式中有11个字符需要转义:开口方括号[,反斜杠\,插入符号^,美元符号$,句点或点。,垂直条或管道符号|,问题标记?,星号或星号*,加号+,开口圆括号(和结束圆括号)。
答案 2 :(得分:0)
您需要转义正则表达式中的某些字符。所以它看起来像:
var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/; // Note the backslashes
圆括号,加号,星号和反斜杠是正则表达式中具有特殊含义的许多字符中的一些。为了按字面意思包含它们,你需要用反斜杠来逃避它们。