3

我正在尝试验证电话号码,如下所示。在 61 之后,它应该只从 2 或 3 或 6 开始。示例如下。61-245623463:有效 61-345623456:有效 61-445623423:无效 61-645623485:有效

我当前的代码如下。但它不起作用。

$("#mask_aus_phone").inputmask({mask: "61-2 9999 9999"});
$("#mask_aus_phone").inputmask({mask: "61-3 9999 9999"});
$("#mask_aus_phone").inputmask({mask: "61-6 9999 9999"});

我也尝试如下。但它也不起作用。

$("#mask_aus_phone").inputmask({mask: "61-{2,3,6} 9999 9999"});

有人可以帮我验证这一点。

4

2 回答 2

2

您可以将正则表达式输入输入掩码:

$('#mask_aus_phone').inputmask('Regex', { 
    regex: "^61-[236]"
});

我使用了正则表达式^61-[236],但您也可以使用正向预测并断言后面的数字61-是 2、3 或 6:

^61-(?:(?=[236]).)+

更新:

您没有明确说明,但是如果您想将之后的总位数限制61-为 9,那么您可以尝试:

^61-[236]\d{8}$

演示:

正则表达式101

于 2016-07-13T04:55:42.737 回答
0

您可以通过最近的电话分机构建一个小字典,而不是使用正则表达式:

Inputmask.extendAliases({
  my_phone: {
    alias: "abstractphone",
    placeholder: '#',
    showMaskOnFocus: false,
    phoneCodes: [{
      mask: "61-2 #### ####",
      region_name: 'Dois',
      desc_en: "Second region"
    }, {
      mask: "61-3 #### ####",
      region_name: 'Três',
      desc_en: "Third region"
    }, {
      mask: "61-6 #### ####",
      region_name: 'Seis',
      desc_en: "6th region"
    }],
    onKeyValidation: function() {
      let mt = $(this).inputmask("getmetadata");
      $('#jqma span').text(
       mt['region_name']+' - '+mt['desc_en']).css(
       'color', `#${Math.floor(Math.random() *
       0x1000000).toString(16).padStart(6, 0)}`
      );
      console.log(mt);
    }
  }
});
$('#jqma input').inputmask("my_phone");
span {color:#37e;font-weight:bold;transition: color 1s}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://rawgit.com/RobinHerbots/jquery.inputmask/4.x/dist/inputmask/inputmask.js"></script>
<script src="https://rawgit.com/RobinHerbots/jquery.inputmask/4.x/dist/inputmask/inputmask.extensions.js"></script>
<script src="https://rawgit.com/RobinHerbots/jquery.inputmask/4.x/dist/inputmask/inputmask.phone.extensions.js"></script>
<script src="https://rawgit.com/RobinHerbots/jquery.inputmask/4.x/dist/inputmask/jquery.inputmask.js"></script>
<script src="https://rawgit.com/RobinHerbots/jquery.inputmask/4.x/dist/inputmask/phone-codes/phone.js"></script>

<p id="jqma"><label>Extended phone alias: <input placeholder="61-# #### ####"/></label> <span/>
</p>

此动态验证器示例基于此答案。解释如下:

  • 电话分机就像一个抽象工厂,通过alias: "abstractphone";引用。
  • phone.js“实现” alias phone,它具有预定义的规则,例如仅数字/整数掩码(如果世界上大多数电话号码对该输入有效,这足以验证它们:)$('#mask_aus_phone').inputmask('phone')
  • 通过使用 alias 属性扩展别名abstractphone,可以定义多个包含特定掩码和相关元数据的项目,这些元数据可以在验证时动态获取。
于 2018-04-14T21:46:08.253 回答