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

时间:2012-07-04 11:37:30

标签: javascript regex

我需要替换所有数字。

我的功能只替换第一个数字。

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

5 个答案:

答案 0 :(得分:60)

您需要在正则表达式中添加“全局”标记:

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

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

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

答案 1 :(得分:9)

使用

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

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

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

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

答案 2 :(得分:4)

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

您可以使用 \d 作为数字,因为它短于 [0-9]

JavaScript的:

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

输出:

XX.XX.XXXX

答案 3 :(得分:3)

找到数字,然后用指定的字符串替换。它通过两种方法实现

  1. 使用正则表达式文字

  2. 使用关键字RegExp对象

  3. 使用正则表达式文字:

    <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 :(得分:0)

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

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