我希望我的字符串的前两个字符不应该是特殊字符
function detectInvalidChars(limitField)
{
var len=limitField.value.length;
var char1=limitField.value.substring(0,1);
var char2=limitField.value.substring(1,2);
if(char1=='&'||char1=='<' char1=='!' || char2=='&'||char2=='<'..........so on)
{
alert("Invalid character");
limitField.value = limitField.value.substring(0,len-1);
}
}
而不是将char1
和char2
与每个特殊字符相匹配。我该怎么办?
答案 0 :(得分:1)
您可以使用正则表达式:
var re = /^([&<!]|.[&<!])/;
if (re.test(limitField.value)) {
alert...
}
答案 1 :(得分:0)
查看字符串方法.charCodeAt(n)
然后你应该能够比较范围内的ascii值。
因此,例如,如果要排除控制字符,可以编写类似
的内容if (mystring.charCodeAt(0)<32 || mystring.charCodeAt(1)<32) {
alert("Invalid character");
}
或使用正则表达式。
您可能会发现此问题有用: isalpha replacement for JavaScript?
答案 2 :(得分:0)
您可以在原始子字符串上使用正则表达式。
substring从“from”到“to”获取字符串的一部分。
/ ^ [0-9a-z] + $ /是正则表达式,只允许0 ... 9和... z
function is_part_alnum(value, from, to)
substring = value.substring(from, to);
if(!substring.match(/^[0-9a-z]+$/) {
alert("Invalid character(s)");
}
}
答案 3 :(得分:0)
如果您不想使用正则表达式并想要定义自己的特殊字符集,可以使用如下函数:
function detectInvalidChars(s, count) {
var specialChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_";
var firstChars = s.substr(0, count).split('');
for(var i=0; i<firstChars.length; i++) {
if(specialChars.indexOf(firstChars[i]) !== -1) {
// invalid char detected
}
}
}
s
是您的字符串,count
是应调查的第一个字符的数量。