如何在正则表达式中正确转义字符
|
我想在字符串中进行字符串搜索。简单地说“ 0”。
当此“ 1”字符串包含特殊的正则表达式字符(例如*,+等)时,就会出现问题。它失败,并显示错误“ 2”。
我浏览了网络,发现可以用
\\Q some string \\E
转义字符串。
但是,这并不总是产生所需的行为。例如:
var sNeedle = \'*Stars!*\';
var sMySTR = \'The contents of this string have no importance\';
sMySTR.search(\'\\Q\' + sNeedle + \'\\E\');
结果是-1。好。
var sNeedle = \'**Stars!**\';
var sMySTR = \'The contents of this string have no importance\';
sMySTR.search(\'\\Q\' + sNeedle + \'\\E\');
结果为“无效的量词”。发生这种情况是因为2个或更多特殊字符彼此“接触”,原因是:
var sNeedle = \'*Dont touch me*Stars!*Dont touch me*\';
var sMySTR = \'The contents of this string have no importance\';
sMySTR.search(\'\\Q\' + sNeedle + \'\\E\');
可以正常工作。
我知道我可以创建一个函数escapeAllBadChars(sInStr)
,并在每个可能的特殊正则表达式字符之前添加双斜杠,但是我想知道是否有更简单的方法?
没有找到相关结果
已邀请:
4 个回复
期差骇蓟
不能在JavaScript中工作(至少,它们不会转义任何内容...),如您所见:
产生:
正如您在Ideone上看到的那样。 以下字符需要转义:
因此,将执行以下操作:
不,
和
不需要逃脱:它们没有特殊含义,只需要打开它们的对应部分即可。 请注意,使用文字正则表达式
时,还需要转义
字符。但是,ѭ27不是一个正则表达式元字符:在ѭ29对象中使用时,不需要转义。
氏脑
届甸衬丝蚕
另外,您可以尝试使用单独的库(例如XRegExp),该库已经处理了您要重新解析的细微差别。
辅奈