我有两个字段,NIC和用户名。他们的验证是
NIC检查数字或字符
用户名字段必须包含8个以上的字符,包括日期
NIC的出生日期。
到目前为止,我已经为NIC尝试过此操作。
function validateNIC()
{
var nic = document.getElementById('NIC');
var mesg = document.getElementById('message1');
if (NIC.length != 14) {
message1.innerHTML="Length must be 14 characters";
} else{
message1.innerHTML="Length is good";
}
}
<div class="form-group">
<label for="username"><span class="req">* </span> NIC NUMBER:</label>
<input class="form-control" type="text" name="NIC" id = "NIC" required onkeyup = "validateNIC();" maxlength=14 />
<span id="message1"></span>
</div>
对于我的用户名,我尝试了这个。
function Validate(txt) {
txt.value = txt.value.replace(/[^a-zA-Z-'\n\r.]+/g, '');
}
<div class="form-group">
<label for="username"><span class="req">* </span> User name:</label>
<input class="form-control" type="text" name="username" id="txt" onkeyup="Validate(this)" maxlength=14 required />
<div id="errLast"></div>
</div>
我对NIC的验证不太有效,它一直显示
即使长度很好,“长度必须为14个字符”。
在用户名部分,有人可以告诉我该怎么做吗?是
有一个我必须做的数组吗? NIC的示例是
T2108974302906,其中210897是DOB。
最佳答案
var nic = document.getElementById('NIC');
var mesg = document.getElementById('message1');
if (NIC.length != 14) {
这里的
NIC
是指DOM元素,而不是该输入元素的值。您要使用
nic.value.length
。至于用户名,您的RegEx看起来很奇怪
[^a-zA-Z-'\n\r.]
。该集合匹配不在集合中的字符。为什么要放\n
和\r
?无论如何,如果您使用
<form>
元素提交这些字段,建议您使用pattern属性。您可以在http://regex101.com/上测试yoru模式提取DOB:
<input pattern="^T[0-3]\d[0-1]\d{10}$">
validateNIC() {
var nic = document.getElementById('NIC');
var isValid = /^T[0-3]\d[0-1]\d{10}$/.test(nic.value);
var dob = nic.value.substring(1, 7);
}
关于javascript - NIC和用户名验证字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40578592/