繁体   English   中英

实时验证和输出带有正则表达式的文本字段

[英]Live validating and outputting a text field with a regular expression

我正在尝试验证并使用返回文本框输入字段bu

var ok = phNum.search(/^\(?\d{3}\D*\d{3}\D*\d{4}$/);
if (ok==0) {
  var parts = phNum.match(/^\(?(\d{3})\D*(\d{3})\D*(\d{4})$/);
  output.value='('+parts[1]+') '+parts[2]+'-'+parts[3];
}

应当接受:555-555-1234、5555551234,(555)555-1234等,然后在此演示中返回:(555)555-1234。

这是我的代码

<input id='phone'></input>

<script>
 $("#phone").on("load change keyup paste", function (e) {
    if (e.keyCode == 8) {} else {
        var output;
        var input = $("#phone").val();

        $("#phone").val(output);

        var ok = phNum.search(/^\(?\d{3}\D*\d{3}\D*\d{4}$/);
        if (ok == 0) {
            var parts = phNum.match(/^\(?(\d{3})\D*(\d{3})\D*(\d{4})$/);
            output.value = '(' + parts[1] + ') ' + parts[2] + '-' + parts[3];
        }
    }
});
</script>

但是我没有得到结果! 为什么会这样,我该如何解决?

除了使用javascript外,您还可以使用正则表达式模式匹配器中内置的浏览器:

<input id='phone' pattern="/^\(?\d{3}\D*\d{3}\D*\d{4}$/"></input>

和.....“输出”未定义:

var output;

然后使用它:

$("#phone").val(output); //What's the value of "output" here? : undefined

加号...。如果每次更改输入值时都检查输入,则在键入第一个数字时也会对其进行检查。 那将不匹配您的正则表达式,因此将其删除。

编辑:

检查以下代码: http : //jsfiddle.net/hza0wex5/5/仅当输入至少包含10个字符时,才会格式化数字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM