如何匹配点下划线下划线“.__”

时间:2013-06-06 16:35:44

标签: javascript regex

我正在尝试将所有.__的{​​{1}}替换为__,将.-替换为-,所以请执行以下操作:

article.__authors.__item ...会成为... article__authors__item

...和...

bucket.__water.-half ...会成为... bucket__water-half

我从.__部分开始,并提出\b\.__\b作为我的正则表达式,但http://gskinner.com/RegExr/似乎不喜欢它...

这适用于第二场比赛\b\.-\b

有更好的方法吗?

干杯, 尼克

2 个答案:

答案 0 :(得分:6)

除非您希望正则表达式只匹配有字边界的位置,否则我会删除\b

正如你的正则表达式现在一样,它会在article.__ authors中找到模式,但在article.__authors中找不到,因为\b_之间没有a

它也无法找到.__ authors中的模式,因为在此期间之前没有\b

\.__可以正常使用

它与您的连字符一起使用的原因是因为_被视为word的合法字符,但-不是-a。因此a_a之前有一个单词边界,但{{1}}不是

http://rubular.com/r/cgT1bD7o0d

答案 1 :(得分:2)

那么你真正想要做的是删除一个前面有字母数字字符后跟一个破折号或两个下划线的点?然后,您可以使用positive lookahead assertions

执行此操作

搜索\b\.(?=__|-)并替换为空字符串。

如果您还想确保在下划线/短划线后面跟着另一个字母数字字母,您可以:

搜索\b\.(?=__(?=[A-Za-z0-9])|-\b)并替换为空字符串。

相关问题