我有一个电话号码文本字段。现在,我想通过java脚本应用正则表达式。为此,我使用了下面的代码。但它不接受 10 位数字。有人会告诉我下面的代码有什么问题吗?
java脚本代码:-
function val(value) {
var p = phonevalue1
p = p.replace(/[^\d]*/gi, "")
if (p.length <= 5) {
value.value = p;
}
else if (p.length > 5 && p.length < 9) {
var a = p.substring(0, 5);
var b = p.substring(5, p.length);
var c = a + "-" + b;
value.value = c;
}
else if (p.length >= 9) {
var len = p.length;
var a = p.substring(0, 5);
var b = p.substring(5, len);
var c = a + "-" + b;
value.value = c.substring(0, 10);
}
}
最佳答案
据我所知,您想要以下内容
- 5 位或更少的数字只需将数字添加到 value 对象的 value 属性
- 6 - 8 位数字在第五位数字后添加连字符,如 12345-678
- 9 位或更多数字12345-6789
注释:
value.value 表示 value 是一个 {};
phonevalue1 在函数中未定义,因此我假设它是在父作用域中定义的,并且是一些数字字符串。
您提供的代码可以稍微简化一下。我将进行一些调整,您必须调整代码块处理该函数的方式。 K?
function val(value) {
var p = phonevalue1
p = p.replace(/[^\d]*/gi, "")
if (p.length <= 5) {
value.value = p;
}
else if (p.length > 5 && p.length < 9) {
var a = p.substring(0, 5);
var b = p.substring(5, p.length);
var c = a + "-" + b;
value.value = c;
}
else if (p.length >= 9) {
var len = p.length;
var a = p.substring(0, 5);
var b = p.substring(5, len);
var c = a + "-" + b;
value.value = c.substring(0, 10);
}
}
改成这个...
注意:其中value是您所说的对象,
var value = {};
var phonevalue1 = "12345";
var phonevalue2 = "12345678";
var phonevalue3 = "1234567890";
value.value = phonevalue1.replace(/(^\d{5})/, "$1-").replace(/-$/, '');
=> { value: "12345" };
value.value = phonevalue2.replace(/(^\d{5})/, "$1-").replace(/-$/, '');
=> { value: "12345-678" };
value.value = phonevalue3.replace(/(^\d{5})/, "$1-").replace(/-$/, '');
=> { value: "12345-67890" };
If you want to use a function as you have, I will try to make the same thing work, but the way your code is structured is not recommended as it is unnecessarily long and confusing.
function addHyphen( numString ){
return numString.replace(/(^\d{5})/, "$1-").replace(/-$/, '');
}
value.value = addHyphen( phonevalue1 );
希望这有帮助...
关于javascript - 正则表达式不适用于电话号码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137444/