【发布时间】:2011-07-02 05:30:38
【问题描述】:
我有一个正则表达式,如果后面没有以下字符之一,它会从字符串中删除任何反斜杠:\ / 或}。
应该转这个字符串:
foo\bar\\batz\/hi
进入这个:
foobar\\batz\/hi
但问题是它正在处理每个反斜杠。所以它遵循规则,因为它删除了第一个反斜杠,并忽略了第二个反斜杠,因为它后面跟着另一个反斜杠。但是当它到达第三个时,它会删除它,因为它后面没有另一个。
我当前的代码如下所示:str.replace(/\\(?!\\|\/|\})/g,"")
但生成的字符串如下所示:foobar\batz\/hi
如何让它跳过第三个反斜杠?还是做某种明确的否定搜索和替换类型的事情?例如。替换'\',但不要替换'\\'、'\/'或'\}'?
请帮忙! :)
编辑
抱歉,我应该解释一下 - 我使用的是 javascript,所以我认为我不能做负面的后视...
【问题讨论】:
-
它适用于我:
"foo\\bar\\\\batz\\/hi".replace(/\\(?!\\|\/|\})/g,"")。你只需要确保正确地转义字符串。 -
字符串会发生什么:
foo\\\bar或foo\\\\\bar(反斜杠的数量不均匀)。我的回答假设您只想替换最后一个反斜杠(“不均匀”的反斜杠)。我还包括了一个与 JS 兼容的(没有后视)。 -
啊,太好了!似乎工作:D谢谢!
标签: javascript regex replace backslash