验证,javascript

验证,javascript,javascript,validation,Javascript,Validation,我有以下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>sss</title> <me

我有以下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>sss</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />


<script type='text/javascript'>
function isAlphabet(obj){

    var alphaExp = /[^a-z0-9_-]+/;
    if(!obj.value.match(alphaExp)){
        return true;
    }
    else{
        alert('the bad symbols');
        obj.focus();
        return false;
    }
}
</script>

</head>
<body>

    <form action="/">
        <input type='text' id='letters' onblur="isAlphabet(this)"/>
    </form>

</body>
</html>

sss
功能isAlphabet(obj){
var alphaExp=/[^a-z0-9_u-]+/;
如果(!对象值匹配(alphaExp)){
返回true;
}
否则{
警报(“坏符号”);
obj.focus();
返回false;
}
}

我想显示一个
警报()
,只显示验证失败的字符

例如:


如果输入包含“#abc”等符号,则警报消息应仅显示“#”。如何做到这一点?

您可以在包含所有禁止符号(如alphaExp)的正则表达式上匹配所有,然后连接匹配项。

您可以在包含所有禁止符号(如alphaExp)的正则表达式上匹配所有,然后连接匹配项。

下面是一个简单的方法。。。但这并不是最有效的:

function isAlphabet(obj)
{
    var val = obj.value;
    var alphaExp = /[^a-z0-9_-]+/;

    var valid = true;
    var badchars = "";

    for( a = 0; a < val.length; a++ )
    {
        if(val[a].match(alphaExp))
        {
            badchars += "," + val[a];
            valid = false;
        }
    }

    if( !valid )
    {
        alert("The following characters are not allowed: " + badchars.substr(1));
        obj.focus();
    }

    return valid;
}
功能isAlphabet(obj)
{
var val=目标值;
var alphaExp=/[^a-z0-9_u-]+/;
var valid=true;
var badchars=“”;
对于(a=0;a
这里有一个简单的方法。。。但这并不是最有效的:

function isAlphabet(obj)
{
    var val = obj.value;
    var alphaExp = /[^a-z0-9_-]+/;

    var valid = true;
    var badchars = "";

    for( a = 0; a < val.length; a++ )
    {
        if(val[a].match(alphaExp))
        {
            badchars += "," + val[a];
            valid = false;
        }
    }

    if( !valid )
    {
        alert("The following characters are not allowed: " + badchars.substr(1));
        obj.focus();
    }

    return valid;
}
功能isAlphabet(obj)
{
var val=目标值;
var alphaExp=/[^a-z0-9_u-]+/;
var valid=true;
var badchars=“”;
对于(a=0;a
在本例中,您匹配的字符不属于提供的范围。因此,您可以将匹配的文本放入反向引用并使用它


或者,您可以构造一个
Regexp
对象并使用它的属性。

在这种情况下,您匹配的字符不属于提供的范围。因此,您可以将匹配的文本放入反向引用并使用它


或者,您可以构造一个
Regexp
对象并使用它的属性。

如果您使用
g
修饰符,您可以获取
.match()
以返回一个匹配数组(在您的情况下是无效的字符),然后您可以直接显示它们

请参阅本页下约1/3的“字符串匹配(模式)”:


str然后包含[“o”、“or”、“ro”]

如果使用
g
修饰符,可以获取
.match()
以返回匹配数组(在您的情况下为无效字符),然后您可以直接显示它们

请参阅本页下约1/3的“字符串匹配(模式)”:


str然后包含[“o”、“or”、“ro”]

使用与允许的字符匹配的正则表达式来获取删除这些字符的字符串。如果字符串包含任何内容,则验证失败:

function isAlphabet(obj) {
   var alphaExp = /[a-z0-9_-]+/g;
   var illegal = obj.value.replace(alphaExp, '');
   if (illegal.length){
      alert('Input contains the characters '+illegal+' which are not allowed.');
      obj.focus();
      return false;
   } else {
      return true;
   }
}

使用与允许的字符匹配的正则表达式来获取删除这些字符的字符串。如果字符串包含任何内容,则验证失败:

function isAlphabet(obj) {
   var alphaExp = /[a-z0-9_-]+/g;
   var illegal = obj.value.replace(alphaExp, '');
   if (illegal.length){
      alert('Input contains the characters '+illegal+' which are not allowed.');
      obj.focus();
      return false;
   } else {
      return true;
   }
}

这在早于8版的Internet Explorer中不起作用。您必须使用val.charAt(a)或val.substr(a,1)而不是val[a]。这在早于版本8的Internet Explorer中不起作用。必须使用val.charAt(a)或val.substr(a,1)而不是val[a]。