我想为我的小型应用程序验证国民身份证号码。
There are only 9 digits
there is a letter at the end 'x' or 'v' (both capital and simple letters)
3rd digit can not be equal to 4 or 9
如何使用 Visual Studio 2010 验证这一点?我可以使用正则表达式来验证这一点吗?
我想为我的小型应用程序验证国民身份证号码。
There are only 9 digits
there is a letter at the end 'x' or 'v' (both capital and simple letters)
3rd digit can not be equal to 4 or 9
如何使用 Visual Studio 2010 验证这一点?我可以使用正则表达式来验证这一点吗?
您可以在没有 REGEX 的情况下执行此操作,例如:
string str = "124456789X";
if ((str.Count(char.IsDigit) == 9) && // only 9 digits
(str.EndsWith("X", StringComparison.OrdinalIgnoreCase)
|| str.EndsWith("V", StringComparison.OrdinalIgnoreCase)) && //a letter at the end 'x' or 'v'
(str[2] != '4' && str[2] != '9')) //3rd digit can not be equal to 4 or 9
{
//Valid
}
else
{
//invalid
}
斯里兰卡 NIC 验证- javascript
旧 NIC 格式 - 例如:'641042757V'
/^[0-9]{9}[vVxX]$/
新的 NIC 格式 - 例如:'196410402757'(第 8 位必须为 0)
/^[0-9]{7}[0][0-9]{4}$/
你可以试试这个
if ((ID.Count(char.IsDigit) == 9) && (ID.EndsWith("X") || ID.EndsWith("V")) &&
(ID[2] != '4' && ID[2] != '9')))
{
//Valid
}
else
{
//invalid
}
我将指导您为此构建一个正则表达式,但实际上我不会为您做这件事。
从一个空白的正则表达式开始:
-------------
你想要'X'或'V'在最后
------(X or V)
前面两位数
(2 digits)--------(X or V)
非 4 或 9 位数字
(2 digits)(digit not 4 or 9)-----(X or V)
还有 6 位数
(2 digits)(digit not 4 or 9)(6 digits)(X or V)
**Sri Lankan NIC Validation**
$("input[name='number']").on('keydown', function(e) {
var key = e.keyCode ? e.keyCode : e.which;
//alert(key);
if (!([8, 9, 13, 27, 46, 110, 190,17, 88, 89].indexOf(key) !== -1 ||
(key == 65 && (e.ctrlKey || e.metaKey)) ||
(key >= 35 && key <= 40) ||
(key >= 48 && key <= 57 && !(e.shiftKey || e.altKey)) ||
(key >= 96 && key <= 105)
)) e.preventDefault();
});
Sriankan NIC 验证 - JavaScript 正则表达式(ECMAScripts)
旧 NIC 格式 - 例如:'952521381V'
包含 9 个数字和 1 个字母
第三位不等于“4”和“9”
9位数字后,包含v或x
^\d{2}(?:[0-35-8]\d\d(?<!(?:000|500|36[7-9]|3[7-9]\d|86[7 -9]|8[7-9]\d)))\d{4}(?:[vVxX])$
新的 NIC 格式 - 例如:'199525201381'
包含 9 位数字
第 5 位不等于 '4' 和 '9'
第 8 位等于“0”
只有数字不包含字母
^(?:19|20)?\d{2}(?:[0-35-8]\d\d(?<!(?:000|500|36[7-9]|3[7- 9]\d|86[7-9]|8[7-9]\d)))[0]\d?\d{4}$
最近有两种类型的网卡编号模式。新网卡只有 12 位数字组合,旧网卡有 9 位数字组合 X、V 或 x、v 组合。因此,我们必须分别检查每个 NIC 模式。在这里,我为新 NIC 验证和 OLD NIC 验证添加了单独的逻辑。
旧网卡验证
public static bool validateNICOld(String nic) {
int length = nic.length();
if ((length != 10)) {
return false;
} else {
char lastChar = nic.charAt((length - 1));
String lastCharacter = String.valueOf(lastChar);
if ((lastCharacter.equalsIgnoreCase("v") || lastCharacter.equalsIgnoreCase("x"))) {
String number = nic.substring(0, (length - 1));
Log.d("NUmber", number);
return !number.trim().matches("/^[0-9]{9}/");
} else {
for (int i = 0; (i
< (length - 2)); i++) {
char currentChar = nic.charAt(i);
if (((currentChar < '0') || ('9' < currentChar))) {
return false;
}
}
}
}
return false;
}
对于新的 NIC 验证
public static bool validateNICNew(String nic) {
int length = nic.length();
if ((length != 12)) {
return false;
} else {
Log.d("NIC", nic);
return !nic.trim().matches("/[0-9]{12}/");
}
}