Javascript正则表达式,替换除数字以外的所有字符

Pra*_*man 20 javascript regex

我想用字符串替换字符串中除0-9之外的所有字符,使用Javascript.

为什么这个正则表达式不起作用?

 "a100.dfwe".replace(/([^0-9])+/i, "")
Run Code Online (Sandbox Code Playgroud)

And*_*y E 41

您需要/g修饰符来替换每个匹配项:

"a100.dfwe".replace(/[^0-9]+/g, "");
Run Code Online (Sandbox Code Playgroud)

我还为您删除了冗余i修饰符和未使用的捕获子表达式括号.正如其他人所指出的,您还可以使用\D它进一步缩短它:

"a100.dfwe".replace(/\D+/g, "");
Run Code Online (Sandbox Code Playgroud)


Mol*_*Man 19

\D 意思是"不是数字":

"a100.dfwe".replace(/\D/g, "")
Run Code Online (Sandbox Code Playgroud)


cta*_*tay 5

那负数呢:

除非您使用负数,否则使用Andy E的示例有效。然后,它会删除“-”符号,同时还会给您一个始终为正数的数字(可能没问题)。但是,如果您希望数字小于0,我建议您执行以下操作:

 "a-100.dfwe".replace(/(?!-)[^0-9.]/g, "")    //equals -100
Run Code Online (Sandbox Code Playgroud)

但是要小心,因为这将保留所有的“-”符号,如果您的文本看起来像“ -a-100.dfwe”,则会出现错误