如何在正则表达式 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\\-\.,:\+\*\(\)=\\'&amp;_]

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

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 中使用 '\'的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式如何匹配多行的所有任意字符

C语言怎么用正则表达式

如何在 Hive 中使用正则表达式来解析 Apache 日志时间戳?

使用正则表达式查找哈希表/字典/地图

如何在配置单元中使用正则表达式排除字符串中的特殊字符

如何使用动态正则表达式匹配 Postgres 中的值