Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式,在每3和4个字符后添加破折号_Javascript_Jquery_Regex - Fatal编程技术网

Javascript正则表达式,在每3和4个字符后添加破折号

Javascript正则表达式,在每3和4个字符后添加破折号,javascript,jquery,regex,Javascript,Jquery,Regex,以下正则表达式: x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, "-"); 在每个3字符后添加破折号,这样输入的123456789变成123-456-789。 我正在尝试使用这个正则表达式格式化电话号码。问题出现在第10个字符上。所以输入的1234567890变成1-234-567-890 如何修改上面的正则表达式,将10位字符串转换为123-456-7890。我使用这个正则表达式是因为当用户输入useskeyup事件时会发生这种情况 如果您

以下正则表达式:

x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, "-"); 
在每个3字符后添加破折号,这样输入的
123456789
变成
123-456-789
。 我正在尝试使用这个正则表达式格式化电话号码。问题出现在第10个字符上。所以输入的
1234567890
变成
1-234-567-890

如何修改上面的正则表达式,将10位字符串转换为
123-456-7890
。我使用这个正则表达式是因为当用户输入useskeyup事件时会发生这种情况

如果您知道更简单或更好的方法,请帮助我,破折号必须在用户输入时添加。不允许使用其他字符

注意事项:

  • 不能使用Jquery屏蔽输入插件(因为如果编辑中间字符,它的焦点会被弄乱)

  • 您是否需要对所有内容都使用正则表达式,或者类似的内容也可以帮助您解决问题

    function convertToValidPhoneNumber(text) {
        var result = [];
        text = text.replace(/[^\d]/g,"");
        while (text.length >= 6) {
            result.push(text.substring(0, 3));
            text = text.substring(3);
        }
        if(text.length > 0) result.push(text);
        return result.join("-");
    }
    
    每次输入字段中的文本更改时,都可以使用此函数。它将产生以下结果:

    "12345678" -> "123-45678"
    "123d456789" -> "123-456-789"
    "123-4567-89" -> "123-456-789"
    
    怎么样

    > "12345678".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
    "123-456-78"
    > "123456789".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
    "123-456-789"
    > "1234567890".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
    "123-456-7890"
    

    如果您已经拥有完整的数字或字符串

    var x = "329193914";
    console.log(x.replace(/(\d{3})(\d{3})(\d{3})/, "$1-$2-$3"));
    
    如果有人在打字时需要…

    $('#locAcct').keyup(function () {
        var foo = $(this).val().split("-").join(""); // remove hyphens
        if (foo.length > 0) {
            foo = foo.match(new RegExp('.{1,3}', 'g')).join("-");
        }
        $(this).val(foo);
    });
    

    我相信最简单的方法是在每个
    n位数之后加上破折号

    var a=$(“#结果”);
    var x=“Asija kasdjflaksd jflka asdkhflakjshdfk jasd flaksjdhfklasd f

    123456781234567812345678123445456789

    ” a、 html(x.replace(/(\d{15})/g,“$1-”)
    最简单的方法是使用简单的javascript onkey和函数。。。它会在每输入3个字符后加上破折号

    <input type="text" class="form-control" name="sector" id="sector" onkeyup="addDash(this)" required>
    
    
    
    添加以下脚本

    <script>
        function addDash (element) {
            let ele = document.getElementById(element.id);
            ele = ele.value.split('-').join('');    // Remove dash (-) if mistakenly entered.
    
            let finalVal = ele.match(/.{1,3}/g).join('-');
            document.getElementById(element.id).value = finalVal;
        }
    </script>
    
    
    函数addDash(元素){
    让ele=document.getElementById(element.id);
    ele=ele.value.split('-').join('');//如果输入错误,请删除破折号(-)。
    设finalVal=ele.match(/.{1,3}/g).join('-');
    document.getElementById(element.id).value=finalVal;
    }
    
    电话号码可以保留多长时间?9和10是我在这里看到的,但是还有其他的可能性你必须考虑吗?工作,但是如果我从中间删除和添加数字,并且添加数字,它就不会重新格式化它。示例:“123-456-7890”在5旁边添加了数字1,结果是:“123-456-7890”不应allow@GGio:首先删除破折号
    val=val.replace(/-/g',)
    然后重新格式化.123-4567890,请帮助我获得这样的结果。只在第一个数字后插入连字符为什么你今天对所有答案都大喊大叫?请编辑您的答案,并使用小写而不是大写。@ZsoltMeszaros这只是因为大写,顺便问一下,为什么用小写书写很重要?因为完全用大写字母键入的消息等同于叫喊和其他争论行为。