【问题标题】:regex four digit validation, validating digit one by one正则表达式四位数验证,一一验证数字
【发布时间】:2016-06-29 08:23:08
【问题描述】:

我有一些用于验证电话号码的代码,带有前缀验证。我想从第一个数字开始验证,依此类推,最多四位数。示例:

第一个数字
0 => 有效
1-9 => 无效

第二个数字
8 => 有效
1-7 & 9 => 无效

第三位数
1 => 有效
2 => 有效
3-9 => 无效

四位数
7 => 有效
8 => 有效
9 => 有效
1-6 => 无效

是否可以使用正则表达式进行验证?

我有正则表达式代码

/^08(17|18|19|31|32|33|38|59|77|78)[0-9]{0,8}$/

但不从第一个数字开始验证。请帮帮我

这是我的 php 代码:

    <div class="container">
        <div style="width:601px; height: 487px;position: fixed;">
            <div style="background-image: url(xlimages/20160614_XL_elemenVisual_-02_cropped.png); background-size: 600px 563px;">
            <div style="height:563px;">
                <center>
<h2 style="color: white; padding-top: 32px; font-size: 50px; font-family: "Gotham Bold";"><b>Masukkan No. XL/Axis</b></h2>
                        <form action="<?php echo $_SERVER[PHP_SELF]; ?>" method="POST">
                            <div style="margin-top:70px;">
                                <div class="input-control">
                                    <br/>
                                    <input type="text" name="msidn" id="jkeyboard" onlick="$('#pwd').replaceSelection("", true);" min="1" style="font-weight: bold; width:500px; height: 70px; border-color:#1ba1e2; color: #1ba1e2; font-size: 30px; text-align: center; line-height: 75px;" required>
                                </div>
                                <input type="hidden" name="cmd" value="cek"><br/><br/><br/><br/><br/><span id="spnPhoneStatus"></span>
                                <div style="margin-top: 190px;"><b>
<input type="submit" onclick="document.getElementById('sound1').play();" name="sbm" value="Lanjut" style="margin-bottom: 6px;background: #1ba1e2; border-color: #1ba1e2; height: 70px; font-weight: bold;  margin-left:0px; width:280px; font-size: 30px;" class="button primary">
                                </b><br/><br/><br/>
                                </div>
                            </div>
                        </form>
                </center>
                </div>
            </div>
        </div>
    </div>

这是我的 javascript 代码:

    <script>
$(document).ready(function() {
  $('#jkeyboard').blur(function(e) {
    if (validatePhone('jkeyboard')) {
      $('#spnPhoneStatus').html('Nomor Yang Anda Masukkan No. XL/Axis');
      $('#spnPhoneStatus').css('color', 'green');
    } else {
      $('#spnPhoneStatus').html('Nomor Yang Anda Masukkan Bukan No. XL/Axis');
      $('#spnPhoneStatus').css('color', 'red');
    }
  });
});

function validatePhone(jkeyboard) {
  var a = document.getElementById(jkeyboard).value;
  var filter = /^08(17|18|19|31|32|33|38|59|77|78)[0-9]{0,8}$/;
  if (filter.test(a)) {
    return true;
  } else {
    return false;
  }
}

</script>

【问题讨论】:

  • 添加代码以显示您为解决问题所做的努力。
  • 你的正则表达式没有从第一个数字开始验证是什么意思?
  • @ShyamBhimani ok 等等我会编辑我的帖子
  • @MariaDeleva 我的意思是使用该正则表达式我无法验证第一个数字的数字。我有电话号码 0817565656 我将从 1-4 位进行验证,当我输入第一个或第二个或第三个数字时,例如 0 和 8 和 1 将显示无效,但当我输入 0817 时有效。我想要的是验证第一个数字的前缀号码
  • /^08?(17|18|19|31|32|33|38|59|77|78)?[0-9]{0,8}$/ 也许让它们像这样可选?至少它适用于regex101.com

标签: javascript ajax regex validation


【解决方案1】:

感谢bobble bubble的共同努力 而我,这是最终的正则表达式:

^0([8]([12]([789]([0-9]{0,8}))?)?)?$

【讨论】:

    【解决方案2】:

    解决了,谢谢 bobblebubble,这个工作正则表达式解决了我的问题
    /^0(?:8(?:[12][789]?)?)?$/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多