44

我需要替换所有数字。

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

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

5 回答 5

90

您需要将“全局”标志添加到您的正则表达式:

s.replace(new RegExp("[0-9]", "g"), "X")

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

.replace(/[0-9]/g, "X")
于 2012-07-04T11:40:29.370 回答
14

采用

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

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

或者留在你的RegExp构造函数:

s.replace(new RegExp("\\d", "g"), "X")
于 2012-07-04T11:40:24.703 回答
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

于 2016-05-01T19:09:52.010 回答
4

修饰符用于执行全局匹配(查找所有匹配项而不是在第一个匹配项之后停止/g

您可以使用 \d 数字,因为它比 [0-9].

JavaScript:

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

输出:

XX.XX.XXXX
于 2012-07-04T11:47:39.127 回答
0

您忘记添加全局运算符。用这个:

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

于 2018-11-24T05:47:02.363 回答