我想使用Javascript替换字符串中除0-9之外的所有字符。
为什么这个正则表达式不能工作?
"a100.dfwe".replace(/([^0-9])+/i, "")
发布于 2012-02-16 18:12:39
\D
的意思是“非数字”:
"a100.dfwe".replace(/\D/g, "")
发布于 2016-03-04 23:45:06
负数怎么办:
除非你有一个负数,否则使用Andy E的例子是有效的。然后,它删除了'-‘符号,还留下了一个始终为正的数字(这可能是可以的)。但是,如果你想让数字小于0,我建议你这样做:
"a-100.dfwe".replace(/(?!-)[^0-9.]/g, "") //equals -100
但是要小心,因为这会留下所有的'-‘符号,如果你的文本看起来像"-a-100.dfwe“,就会给你一个错误。
发布于 2012-02-16 18:15:36
这不起作用,因为带有重复修饰符+
的字符类[^0-9]
(=除数字之外的任何字符)将只匹配一个非数字字符序列,例如"aaa“。
出于您的目的,可以按照其他修饰符的建议使用/g
修饰符(以全局替换所有匹配项),还可以使用预定义的字符类\D
(=非数字)而不是[^0-9]
,这将产生更简洁的正则表达式/\D+/
。
https://stackoverflow.com/questions/9309278
复制相似问题