1

我使用下面的正则表达式来检查字母、数字、字符、+ 和 -

if (/[^a-z0-9\-\+]+$/i.test(value)) 
        {
            alert ("Only alphabets and numbers are allowed.");
            return;
        }

如果使用了任何特殊字符,这将显示消息。但我面临的一个问题是,如果该值是特殊字符和字母或数字的组合,那么这个条件不满足。例如,如果值为,%$2则条件不返回 true 并显示消息。我希望如果存在任何特殊字符,那么条件应该满足并显示消息。

4

2 回答 2

2

你不应该使用$锚。在您的情况下,决赛+也不是必需的。以下检查字符串是否包含任何不允许的字符:

if (/[^a-z0-9\-\+]/i.test(value)) 
{
    alert ("Only alphabets and numbers are allowed.");
    return;
}

您也可以反转条件。(使用*+取决于您是否允许空字符串。)以下检查整个字符串是否仅包含允许的字符:

if (!/^[a-z0-9\-\+]*$/i.test(value)) 
{
    alert ("Only alphabets and numbers are allowed.");
    return;
}
于 2012-11-20T11:28:40.457 回答
0

$匹配字符串的结尾,$在您的情况下不需要

+匹配前一个令牌一次或多次,

在您的情况下也不需要

 if (/[^a-z0-9\-\+]/i.test(value)) 
    {
        alert ("Only alphabets and numbers are allowed.");
        return;
    }
于 2012-11-20T11:32:53.157 回答