Regex Actionscript使用\Q忽略特价。得到奇怪的结果
谢谢你阅读我的问题 我在actionscript中使用一个RegExp对象来简单地测试一个字符串在另一个字符串中的出现情况。有时字符串可能包含正则表达式特殊字符,即“*” 为了处理这个问题,我将\Q连接到搜索字符串的开头,如下所示Regex Actionscript使用\Q忽略特价。得到奇怪的结果,regex,actionscript,Regex,Actionscript,谢谢你阅读我的问题 我在actionscript中使用一个RegExp对象来简单地测试一个字符串在另一个字符串中的出现情况。有时字符串可能包含正则表达式特殊字符,即“*” 为了处理这个问题,我将\Q连接到搜索字符串的开头,如下所示 (String(reportItem[attributeToSearch])).search(new RegExp(("\Q" + searchText), "i")) 它目前适用于较大的字符串和字符串“*”。 然而,我遇到了一个问题,我正在搜索的字符串是“带爆破电
(String(reportItem[attributeToSearch])).search(new RegExp(("\Q" + searchText), "i"))
它目前适用于较大的字符串和字符串“*
”。
然而,我遇到了一个问题,我正在搜索的字符串是“带爆破电荷的射弹”。我正在搜索“、s”,结果返回-1。如果我在没有\Q的情况下搜索相同的内容,它可以正常工作,但是“*
”的大小写会中断
什么给了我
提前谢谢 在使用下面的代码将用户搜索中的任何特殊字符包括在正则表达式中之前,可以对其进行转义。不幸的是,flex没有任何内置的方法来转义正则表达式字符串
(感谢)
你也可以考虑只使用正则搜索和<代码> TooWrase,如果你不需要利用任何正则表达式的工具。
编辑:正如Jacob指出的那样,\Q确实有效,这是一个比手动转义更好的解决方案。您需要在
\Q
中转义\
new RegExp(("\\Q" + searchText), "i");
试试这个:
var regExp:RegExp;
regExp = new RegExp("\Qs,", "i");
trace(regExp.toString()); // /Qs,/i
regExp = /\Qs,/i;
trace(regExp.toString()); // /\Qs,/i
regExp = new RegExp("\\Qs,", "i");
trace(regExp.toString()); // /\Qs,/i
您还需要转义\Q`
新RegExp(“\\Q”+searchText)
-1以手动转义特殊字符。+1以推荐定期搜索.net 0谢谢,这就是问题所在。
var regExp:RegExp;
regExp = new RegExp("\Qs,", "i");
trace(regExp.toString()); // /Qs,/i
regExp = /\Qs,/i;
trace(regExp.toString()); // /\Qs,/i
regExp = new RegExp("\\Qs,", "i");
trace(regExp.toString()); // /\Qs,/i