我需要从字符串中删除某些特殊字符。 对于同正在使用使用正则表达式删除点删除*太
replace(/[()-/.]/gi, '');
这是工作正常,但我意识到,它还会删除“*”。任何想法,为什么? 如果我删除'。'从表达它的工作正常,所以我想这是造成一些问题,这是不确定的
我需要从字符串中删除某些特殊字符。 对于同正在使用使用正则表达式删除点删除*太
replace(/[()-/.]/gi, '');
这是工作正常,但我意识到,它还会删除“*”。任何想法,为什么? 如果我删除'。'从表达它的工作正常,所以我想这是造成一些问题,这是不确定的
问题是出现在中间的未转义的连字符。使这样的:当一个未转义连字符显示在它作为一个范围内的字符类的中间
replace(/[()\/.-]/gi, '');
)
是ASCII 41/
为ASCII 47*
ascii 42因此你的正则表达式否定*
,因为-
作用于范围中的所有字符41-47
连字符需要转义,因为它在字符类中的位置。您也可以删除i
(不区分大小写)标志,因为您没有包含正确的字符,所以不需要。
/[()\-\/.]/g
注:在字符类的连字符有特殊的意义。您可以将其作为课程的第一个或最后一个字符。在一些正则表达式实现中,你也可以直接放在范围之后。如果将连字符放在其他任何位置,则需要在其前面加上反斜杠,以便将其添加到角色类中。
谢谢猜猜会有更多的概念深入挖掘 – noob 2014-10-17 15:32:46