Jquery / Regex不适用于val / var?

时间:2015-10-01 10:50:28

标签: javascript jquery regex replace

我做错了,这是肯定的:-)我检查了https://regex101.com/以检查正则表达式是否正确并且找不到任何问题。我也是jQuery / JavaScript的新手,但是控制台没有触发任何语法错误等。

我测试了代码,将'Goedemorgen'替换为'Goodmorning'。 工作正常所以我猜错误是在replace / regex中?我不确定!任何帮助将不胜感激。

$( document ).ready(function() {

    $(".wpcf7-number").focusout(function() {

        var InputVal = $('.wpcf7-number').val();
        var InputValNew = InputVal.replace(/^[0-9]*$/g,'');

        console.log(InputValNew + ' New Var');

    });

});

我希望获得的输出: 033-2245-22455至:033224522455(所以没有 - )。

不要苛刻我还在学习!

3 个答案:

答案 0 :(得分:3)

您想删除所有不是数字的字符。

您需要将^移动到字符类(开头),以便它否定范围的含义,并删除量词和锚点。

var InputValNew = InputVal.replace(/[^0-9]/g,'');

以下是regex101.com demo

你的正则表达式 - /^[0-9]*$/g - 匹配整个字符串,该字符串为空或仅包含数字。 ^这里是字符串锚点的开头,$是字符串acnhor的结尾。 *表示* 0或更多次出现。因此,/g全局修饰符毫无意义:如果传递1个字符串并想要完全匹配,则不能有多个匹配。

还有\D类匹配任何非数字字符。它是JS中[^\d][^0-9]的绝对同义词。

答案 1 :(得分:2)

您可以使用\D匹配任何无数字值

$(document).ready(function() {
  $(".wpcf7-number").focusout(function() {
    var InputVal = $('.wpcf7-number').val();
    var InputValNew = InputVal.replace(/\D/g, '');
    console.log(InputValNew + ' New Var');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type=text class="wpcf7-number" />

答案 2 :(得分:1)

适合您的示例代码

&#13;
&#13;
var a ="033-2245-22455";
var b =a.replace(/-/g ,'');
alert(b);
&#13;
&#13;
&#13;