javascript - 正则表达式不适用于电话号码字段

标签 javascript regex

我有一个电话号码文本字段。现在,我想通过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);
    }
}

最佳答案

据我所知,您想要以下内容

  1. 5 位或更少的数字只需将数字添加到 value 对象的 value 属性
  2. 6 - 8 位数字在第五位数字后添加连字符,如 12345-678
  3. 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/

相关文章:

javascript - 为什么在一个 js 文件中创建的函数在调用甚至在另一个 js 文件中创建时不起作用?

javascript - 如何在 React Native 中使用导航器向组件动态添加新 Prop

php - 从字符串中删除所有特殊字符

JavaScript(正则表达式): excluding matches from output

javascript - 提取匹配的文本及其相邻上下文 n 个词上游 n 个词下游(左起第 n 次出现和右起第 n 次出现)

java - java中的正则表达式?我被困住了

javascript - 在 Firebase 中实现 session cookie 后无法读取属性 'getIdToken'

javascript - jQuery ui 组合框在 IE 10 中默认打开

javascript - 为什么 jQuery 幻灯片在选择时弹跳?

php - 如何在 preg_match() 中匹配重音字符?