使用正则表达式删除点也会删除*

时间:2014-10-17 15:22:26

标签: javascript regex

我需要从字符串中删除某些特殊字符。 对于同样的使用

    replace(/[()-/.]/gi, '');

这工作正常,但我意识到它也会删除'。*任何想法为什么? 如果我删除'。'从表达它的工作正常,所以我想这是在创造一些不确定的问题

2 个答案:

答案 0 :(得分:2)

问题是在中间出现未转义的连字符。像这样:

replace(/[()\/.-]/gi, '');

当未转义的连字符出现在字符类的中间时,它将作为范围

  • )是ascii 41
  • /是ascii 47
  • *是ascii 42因此你的正则表达式否定*,因为-会对41-47
  • 范围内的所有字符起作用

答案 1 :(得分:2)

连字符需要转义,因为它在字符类中的位置。您也可以删除i(不区分大小写)标记,但这不是必需的,因为您没有包含正确的字符。

/[()\-\/.]/g

注意:在字符类中,连字符具有特殊含义。您可以将其作为班级的第一个或最后一个角色。在某些正则表达式实现中,您也可以直接放在一个范围之后。如果将连字符放在其他任何位置,则需要在其前面加上反斜杠,以便将其添加到角色类中。