我希望我的字符串的前两个字符不应该是特殊字符

时间:2013-01-29 08:07:51

标签: javascript

我希望我的字符串的前两个字符不应该是特殊字符

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);
    }
}

而不是将char1char2与每个特殊字符相匹配。我该怎么办?

4 个答案:

答案 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是应调查的第一个字符的数量。

相关问题