我有这个非常酷的验证脚本,用于输入我喜欢的货币
$("#saleprice").on("keyup", function(){
var valid = /^\d{0,4}(\.\d{0,2})?$/.test(this.value),
val = this.value;
if(!valid){
console.log("Invalid input!");
this.value = val.substring(0, val.length - 1);
}
});
但我希望有同样的方法来验证电话号码。这是我用手机的正则表达式的小提琴,但我似乎无法让它工作。即使我在正则表达式中指定了()
以及数字和-
,.
等字符,代码也不允许输入任何字符。
$("#telephone").on("keyup", function(){
var valid = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/.test(this.value),
val = this.value;
if(!valid){
console.log("Invalid input!");
this.value = val.substring(0, val.length - 1);
}
});
我想允许以下格式的电话号码。
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试将input
元素maxlength
设置为10
;替换非数字字符; input
长度为十个字符时的格式值
$("input").on("keyup", function(e) {
e.target.value = e.target.value.replace(/[^\d]/, "");
if (e.target.value.length === 10) {
// do stuff
var ph = e.target.value.split("");
ph.splice(3, 0, "-"); ph.splice(7, 0, "-");
$("label").html(ph.join(""))
}
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" maxlength="10" placeholder="tel: input ten numbers" />
<label for="input"></label>
&#13;