【问题标题】:regular expression to validate aadhar NO [closed]正则表达式来验证 aadhar NO [关闭]
【发布时间】:2016-03-16 05:09:31
【问题描述】:

在使用正则表达式验证 Addhar 卡号方面需要帮助。它是 12 位数字,格式如下。它可以包含 0 到 9 位数字。

例如0000 0000 0000

【问题讨论】:

  • 你有没有尝试过?

标签: regex validation


【解决方案1】:
/(^[0-9]{4}[0-9]{4}[0-9]{4}$)|(^[0-9]{4}\s[0-9]{4}\s[0-9]{4}$)|(^[0-9]{4}-[0-9]{4}-[0-9]{4}$)/

Aadhar 号码正则表达式验证

以下数字有效:

  • 1111-2222-3333
  • 1111 2222 3333
  • 111122223333

以下无效:

  • 11112222 3333
  • 1111 22223333
  • 1111-22223333
  • 11112222-3333
  • 1111 2222 3333

【讨论】:

    【解决方案2】:

    这个正则表达式帮助我完成了基本的验证:

    "^[2-9]{1}[0-9]{11}$"
    

    第一部分指定第一个数字在 2 到 9 之间。第二部分指定其余 11 位应该在 0 到 9 之间。

    【讨论】:

      【解决方案3】:
      ^[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}$
      

      以上正则表达式支持以下格式

      • 1234 5678 9123
      • 123456789123
      • 1234-5678-9123

      【讨论】:

        【解决方案4】:

        我没有适合您的正则表达式,但您可以使用此功能检查有效的 aadhar 编号。

        function checkUID(uid) {
            if (uid.length != 12) {
                return false;
            }
        
            var Verhoeff = {
                "d": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                    [1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
                    [2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
                    [3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
                    [4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
                    [5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
                    [6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
                    [7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
                    [8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
                    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]],
                "p": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                    [1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
                    [5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
                    [8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
                    [9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
                    [4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
                    [2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
                    [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]],
                "j": [0, 4, 3, 2, 1, 5, 6, 7, 8, 9],
                "check": function (str) {
                    var c = 0;
                    str.replace(/\D+/g, "").split("").reverse().join("").replace(/[\d]/g, function (u, i) {
                        c = Verhoeff.d[c][Verhoeff.p[i % 8][parseInt(u, 10)]];
                    });
                    return c;
        
                },
                "get": function (str) {
        
                    var c = 0;
                    str.replace(/\D+/g, "").split("").reverse().join("").replace(/[\d]/g, function (u, i) {
                        c = Verhoeff.d[c][Verhoeff.p[(i + 1) % 8][parseInt(u, 10)]];
                    });
                    return Verhoeff.j[c];
                }
            };
        
            String.prototype.verhoeffCheck = (function () {
                var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                    [1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
                    [2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
                    [3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
                    [4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
                    [5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
                    [6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
                    [7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
                    [8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
                    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
                var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                    [1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
                    [5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
                    [8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
                    [9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
                    [4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
                    [2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
                    [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
        
                return function () {
                    var c = 0;
                    this.replace(/\D+/g, "").split("").reverse().join("").replace(/[\d]/g, function (u, i) {
                        c = d[c][p[i % 8][parseInt(u, 10)]];
                    });
                    return (c === 0);
                };
            })();
        
            if (Verhoeff['check'](uid) === 0) {
                return true;
            } else {
                return false;
            }
        }
        

        此函数在其有效 aadhar 否时返回 true,否则返回 false。 例子

        console.log("", checkUID("111111111111")); // 错误

        【讨论】:

        • 此代码有效.. 但并不完美。示例 - “999999999999”返回真,“981298798712”返回假
        • 你找到解决这个问题的方法了吗? @AnilKumar
        【解决方案5】:

        以上所有正则表达式都是错误的。 ^([0-9]){12}$ 是正确的。

        【讨论】:

        • OP 的示例在每四位数字后包含空格,您的正则表达式将与该示例不匹配
        【解决方案6】:

        ^(\d{12}|\d{16})$

        把类型只要

        在 Mvc 模型中,例如:

            [Required]
            [RegularExpression(@"^(\d{12}|\d{16})$", ErrorMessage = "enter Integers only")]
            [Display(Name = "Adar ID:")]
            public long sid { get; set; }
        

        【讨论】:

          【解决方案7】:

          使用 Verhoeff 算法对 Swift 4.0 进行 Aadhaar 数字验证

          extension String {
          
              subscript (i: Int) -> Character {
                  return self[self.index(self.startIndex, offsetBy: i)]
              }
          
              subscript (i: Int) -> String {
                  return String(self[i] as Character)
              }
          }
          
          // Convert a Character to an integer.  So '3' becomes interceder 3.
          
          extension Character {
              var integerValue:Int {
                  return Int(String(self)) ?? 0
              }
          }
          
          class VerhoeffAlgorithm {
          
              // From https://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm
              // based on the "C" implementation
          
              // The multiplication table
              let verhoeff_d : [[ Int ]] = [
                  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                  [1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
                  [2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
                  [3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
                  [4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
                  [5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
                  [6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
                  [7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
                  [8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
                  [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
                  ];
          
              // The permutation table
              let verhoeff_p : [[Int]] = [
                  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                  [1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
                  [5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
                  [8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
                  [9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
                  [4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
                  [2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
                  [7, 0, 4, 6, 9, 1, 3, 2, 5, 8],
                  ];
          
              //Validates that an entered number is Verhoeff compliant.  The check digit must be the last one.
              func ValidateVerhoeff(num : String) -> Bool {
                  var c : Int = 0;
                  let ll : Int = num.count
                  for i in 0..<ll {
                      c = verhoeff_d[c][verhoeff_p[(i % 8)][(num[ll-i-1]).integerValue]]
                  }
                  return (c == 0);
              }
          
          }
          

          【讨论】:

            【解决方案8】:

            试试这个正则表达式:

            ^\d{4}\s\d{4}\s\d{4}$
            

            【讨论】:

              猜你喜欢
              • 2014-05-01
              • 2021-05-20
              • 2010-09-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-08-02
              • 1970-01-01
              • 2014-04-27
              相关资源
              最近更新 更多