javascript 使用imask.js删除电话号码开头的“0”

sqxo8psd  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(116)

我正在尝试使用imask.js在订阅表单上进行电话验证。
我现在有这个简单的代码:

var phoneMask = IMask(
document.getElementById('number_phone'), {
    mask: '+{33}000000000'
});

我想禁用在{33}后面放置0的容量,以便在订阅结束时具有这种数字:+33666666666。但允许在第一个数字后面加上0。
我尝试了一些正则表达式,但仍然不工作:(

mm9b1k5b

mm9b1k5b1#

我们将整个电话号码分为三部分,而不是使用单个掩码:

const phoneMask = IMask(document.getElementById('number_phone'), {
  mask: [
    {
      mask: '+33',
    },
    {
      mask: '9{0}',
      definitions: {
        '9': {
          validator: '[1-9]',
          cardinality: 1,
        },
      },
    },
    {
      mask: '00000000',
    },
  ],
});

面具的作用:
1.前缀+33始终存在。
1.前缀后的第一个数字,不能是0。我们使用自定义定义来只允许从19的数字。
1.电话号码的其余部分,允许任何数字(包括0)。
掩码将阻止用户在+33国家代码之后立即输入0,但允许在第一个数字之后输入0

dfddblmv

dfddblmv2#

您可以通过在imask.js的mask选项中使用正则表达式来实现所需的行为。下面是一个更新的代码片段,应该适合您:

var phoneMask = IMask(
  document.getElementById('number_phone'), {
    mask: '+{33}0-00000000',
    definitions: {
      '0': {
        validate: function (ch, maskset, pos, strict, opts) {
          // Allow 0 after the country code, but not after the leading 0
          return pos === 3 ? /[0-9]/.test(ch) : /^[1-9]$/.test(ch);
        }
      }
    }
  });

相关问题