【发布时间】:2016-03-16 05:09:31
【问题描述】:
在使用正则表达式验证 Addhar 卡号方面需要帮助。它是 12 位数字,格式如下。它可以包含 0 到 9 位数字。
例如0000 0000 0000
【问题讨论】:
-
你有没有尝试过?
标签: regex validation
在使用正则表达式验证 Addhar 卡号方面需要帮助。它是 12 位数字,格式如下。它可以包含 0 到 9 位数字。
例如0000 0000 0000
【问题讨论】:
标签: regex validation
/(^[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 33331111 222233331111-2222333311112222-33331111 2222 3333【讨论】:
这个正则表达式帮助我完成了基本的验证:
"^[2-9]{1}[0-9]{11}$"
第一部分指定第一个数字在 2 到 9 之间。第二部分指定其余 11 位应该在 0 到 9 之间。
【讨论】:
^[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{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")); // 错误
【讨论】:
以上所有正则表达式都是错误的。 ^([0-9]){12}$ 是正确的。
【讨论】:
^(\d{12}|\d{16})$
把类型只要
在 Mvc 模型中,例如:
[Required]
[RegularExpression(@"^(\d{12}|\d{16})$", ErrorMessage = "enter Integers only")]
[Display(Name = "Adar ID:")]
public long sid { get; set; }
【讨论】:
使用 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);
}
}
【讨论】:
试试这个正则表达式:
^\d{4}\s\d{4}\s\d{4}$
【讨论】: