JS正则表达式:替换字符串中的所有数字

51

我需要替换所有数字。

我的函数只替换了第一个数字。

var s = "04.07.2012";
alert(s.replace(new RegExp("[0-9]"), "X")); // returns "X4.07.2012"
                                            // should be XX.XX.XXXX"

1
我认为你需要使用全局替换选项。而且 [0-9] 可以简化为 \d - nhahtdh
5个回答

99
您需要在正则表达式中添加 "global" 标志:
s.replace(new RegExp("[0-9]", "g"), "X")

或者,也许更漂亮的是,使用内置的文字正则表达式语法:

.replace(/[0-9]/g, "X")

1
我该如何用Unicode字符替换它们而不是 X?例如使用 \U2022 - Cmag
1
回答:replace(/[0-9]/g, '\u2022'); - Cmag
1
只有当字符串包含所有数字时,此方法才有效。无法处理"test123"。 - Irfan Raza

14

使用

s.replace(/\d/g, "X")

这将替换所有出现的内容。 g 表示全局匹配,因此不会在第一次匹配后停止。

或者继续使用您的 RegExp 构造函数:

s.replace(new RegExp("\\d", "g"), "X")

6

找到数字并用指定的字符串替换。这可以通过两种方法实现:

  1. 使用正则表达式字面量

  2. 使用关键字RegExp对象

使用正则表达式字面量:

<script type="text/javascript">

var string = "my contact number is 9545554545. my age is 27.";
alert(string.replace(/\d+/g, "XXX"));

</script>

**输出:**我的联系电话是XXX。我的年龄是XXX。

了解更多详情:

http://www.infinetsoft.com/Post/How-to-replace-number-with-string-in-JavaScript/1156


4

/g修饰符用于执行全局匹配,而不是在找到第一个匹配项后停止

您可以使用\d表示数字,因为它比[0-9]更短。

JavaScript:

var s = "04.07.2012"; 
echo(s.replace(/\d/g, "X"));

输出:

XX.XX.XXXX

0

你忘记添加全局运算符了。使用这个:

var s = "04.07.2012";
alert(s.replace(new RegExp("[0-9]","g"), "X")); 


2
你的答案与被接受的答案有何不同? - bummi

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