2009-07-20 4 views
1

私はこのコードを持っている:検証は、JavaScriptの

<!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> 

をそして私は、検証が失敗したために文字のみを表示Alert()を示したいと思います。例えば

:入力が「#abc」などの記号が含まれている場合

、警告メッセージは、「#」を示す必要があります。これはどうすればできますか?

答えて

2

が、それはしかし、最も効率的ではないです...それを行うための簡単な方法です:

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; 
} 
+0

バージョン8より前のInternet Explorerでは機能しません。val.charAt(a)またはval.substr(a、1)を使用する必要があります。 val [a]。 – Guffa

0

禁止されているすべてのシンボル(alphaExpなど)が含まれている正規表現でmatchallを実行し、一致させることができます。ここで

1

このケースでは、供給範囲に分類されない文字に一致しています。したがって、一致したテキストを逆参照に入れて使用することができます。

また、Regexpオブジェクトを作成し、そのオブジェクトのlastMatchプロパティを使用することもできます。

0

g修飾語を使用すると、.match()を入力すると、一致する配列(あなたの場合は無効な文字)が返され、表示することができます。

"String.match(パターン)" の約1/3このページ下参照:[ "O"、 "または"、 "RO"]

2

使用http://evolt.org/regexp_in_javascript

var str = "Watch out for the rock!".match(/r?or?/g) 

STRその後、含まれてい許可された文字と一致する正規表現。これらは削除された文字列を取得します。文字列に何かが含まれていると、検証に失敗します。