除了破折号外,删除非数字字符

13
1个回答

26
我建议:
var stripped = string.replace(/[^0-9\-]/g,'');

JS Fiddle演示

字符类中的^(在[]之间)是NOT运算符,因此它匹配的是不是0-9或(转义后的)-字符的字符。

正如在Ted Hopp对这个答案的评论中所提到的那样,当-是最后一个字符时,不需要对其进行转义,但我一般都这么做是为了避免记忆这个规定。

参考资料:


4
当破折号是字符类中的最后一个字符时,无需进行转义。此外,“0-9”可以用“\d”来代替。该正则表达式可以写为“/[^\d-]/g”。 - Ted Hopp
1
谢谢,我已经将该注释添加到答案中了,但正如所指出的那样,我总是转义破折号,以避免记住限制条件(只有当它是最后一个类时才能取消转义)。我真的很懒... ;) - David Thomas
@TedHopp 不需要使用^,只需使用\D - java-addict301
@java-addict301 - 那么-呢?它也不能匹配。 - Ted Hopp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接