感谢您对我之前提问的帮助:
How to find all instances and display in alert
现在我发现我需要包含一些无效的字符验证。
我正在试图弄清楚如何在验证过程中包含一组正则表达式无效字符,这些字符也会显示在同一警报/文本框/“太长/太短”验证中。
所以,我有一个文本框,用户可以输入或粘贴逗号分隔值,例如AAAAAAA,BBBBBBB,CCCCCCCC,DDDDDDDD
它们长度不能超过或少于七个字符,它们只能包含某些字符。
我目前有两个单独的Javascript片段,我现在要尝试合并:
var Invalidchars = "1234567890!@#$%^&*()+=[]\\\';./{}|\":<>?";
for (var i = 0; i < document.getElementById("TextBox1").value.length; i++) {
if (Invalidchars.indexOf(document.getElementById("TextBox").value.charAt(i)) != -1){
alert
和这个
var val = document.getElementById("Textbox1").value,
err = $.grep(val.split(','), function(a) { return a.length != 7; });
if (err.length) {
alert("All entries must be seven (7) characters in length. Please correct the following entries: \n" + err);
return false;
}
return true;
非常感谢任何帮助!
=============================================== ==
解 花了一段时间,但是使用Tenub的代码(它没有完全结合我的两套代码,但足够接近),我终于想出了如何将我的两组代码合并为一组。如果有人对使用它感兴趣,这是代码:
var val = document.getElementById("TextBox1").value,
err = $.grep(val.split(','), function(a) {return (a.length = (!/^[^0-9!@#$%^&*()+=;.\/\{}|:<>\\?\[\]\'\"]{7}$/.test(a)));});
if (err.length){
document.getElementById("DIV1").style.display = "inline-block";
document.getElementById("TextBox2").value = err.join(',');
return callback (false);
}
document.getElementById("DIV1").style.display = "none";
return true;
答案 0 :(得分:0)
答案很简单:
var val = document.getElementById("Textbox1").value;
if(!/[^0-9!@#$%^&*()+=;./{}|:<>?\[\]\\\'\"]{7}/.test(val)) {
// handle invalid value
}
这测试字符串的长度是7个字符,并且不在“^”之后的括号内包含任何字符(还有一些字符用“\”转义)。
您可以在控制台中进行测试:
/[^0-9!@#$%^&*()+=;./{}|:<>?\[\]\\\'\"]{7}/.test('adfFDKZ'); // returns true
/[^0-9!@#$%^&*()+=;./{}|:<>?\[\]\\\'\"]{7}/.test('adf(DKZ'); // returns false
答案 1 :(得分:0)
试试这个:
/*
* This regex matches all the invalid characters. I escaped the
* special characters.
*/
var regex = /.*[0-9!@#\$%\^&\*\(\)\+=\[\]\\';\./\{\}\|":\<\>\?]+.*/;
var text = document.getElementById("TextBox1").value;
/* Test for match...much faster than a for-loop under any circumstances */
if (text.matches(regex)) {
alert("Invalid characters present. Please correct the input");
return false;
}
/* split on delimiter */
var err = $.grep(val.split(','), function(a) { return a.length != 7; });
if (err.length) {
alert("All entries must be seven (7) characters in length. Please correct the following entries: \n" + err);
return false;
}
请告诉我这是否有任何错误。此外,一步测试的唯一真正方法是设置一个非常长的正则表达式。此外,只需一次检查,就会引导用户进行正确的校正。我会提到这一点。