如何在正则表达式 extjs 中使用 '\'
Posted
技术标签:
【中文标题】如何在正则表达式 extjs 中使用 \'\\\'【英文标题】:How to use '\' in the regular expression extjs如何在正则表达式 extjs 中使用 '\' 【发布时间】:2012-04-12 04:50:35 【问题描述】:我正在使用这个正则表达式:[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.当我们在组合框中输入所需的字符时,它们会被自动选择..所以当我们要输入新字符时,我们必须按侧箭头,否则剩余的字符将被删除...
再次感谢,
拉吉
【问题讨论】:
【参考方案1】:我认为你必须逃避你的角色类中的一些项目。比如你的反斜杠、星号、加号、括号和句号。
类似[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]
在正则表达式中为特殊字符 [\^$.|?*+()
添加反斜杠会抑制它们的特殊含义,从而允许您按字面意思使用它们。
http://www.regular-expressions.info/reference.html
【讨论】:
嗨@hungerstar,当我使用上述正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止的字符类【参考方案2】:在正则表达式中有 11 个字符需要转义:左方括号 [、反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或竖线符号 |、问题标记 ?、星号或星号 *、加号 +、左圆括号(和右圆括号)。
【讨论】:
【参考方案3】:您需要对正则表达式中的某些字符进行转义。所以它看起来像:
var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/; // Note the backslashes
括号、加号、星号和反斜杠是正则表达式中具有特殊含义的众多字符中的一部分。为了从字面上包含它们,您需要使用反斜杠对其进行转义。
【讨论】:
嗨@alpha123,当我使用上面的正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止字符类 @rajasti277 我写的时候一定是睡着了。尝试更新版本。以上是关于如何在正则表达式 extjs 中使用 '\'的主要内容,如果未能解决你的问题,请参考以下文章