2016-02-05 181 views
4

我截取其中包含下列字符的消息:正则表达式:如何删除匹配的字符串之前的字符?

*_- 

然而,只要这些字符中的任何一个来过,它总是会被一个\之前。 \只是用于格式化,我想在将它发送到我的服务器之前将其删除。我知道如何轻松地创建一个正则表达式,其将从一个字母删除此反斜杠:

'omg\_bbq\_everywhere'.replace(/\\_/g, '') 

我承认我可能只是这样做操作3次:一次为每个角色,我想删除了之前的反斜杠。但是,我怎么能创建一个单一的正则表达式来检测所有三个字符,并在所有三种情况下删除前面的反斜杠?

+0

''omg \\\ _ bbq \\\ _ everywhere'' ?? – sln

回答

3

你可以使用像[*_-]这样的字符类。

为了这些字符之前只删除反斜杠:

document.body.innerHTML = 
 
    "omg\\-bbq\\*everywhere\\-".replace(/\\([*_-])/g, '$1');

当您将一个子模式为捕获组((...)),拍摄到的潜台词成编号的缓冲器,然后您可以参考$1反向引用(1,因为模式中只有一个(...))。

+0

'1,因为模式中只有一个(...)或可能是1,因为该组包含要替换的数据。 – sln

1

这是ag需要时间来使用原子匹配。具体而言,您需要检查斜线,然后查看任何这些字符的正向预览。

忽略码,想要的原始正则表达式是:

\\

甲反斜杠,具有在它前面的这些字符中的一个(= [* _-]):* _ -

所以现在你正在匹配斜线。原子匹配是0长度匹配,所以它不匹配任何东西,但设置了一个要求,“为了这是一个有效的匹配,它需要紧跟着[* _-]”

原子组: http://www.regular-expressions.info/atomic.html

环视声明:http://www.regular-expressions.info/lookaround.html

正面和负面的前瞻和回顾后的比赛是可用的。

相关问题