2011-01-09 47 views
3

jqueryをフォームの検証に使用しようとしています。JQuery - 一致しない文字を削除するregEx

これは、ユーザーのテキストボックスで許可されるパターンです。

var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g; 

ユーザーがこれ以外のものを入力した場合は、それを ""に置き換える必要があります。

$(document).ready(function() { 
    $('#iBox').blur(function() { 
    var jVal = $('#iBox').val(); 
    if(jVal.match(pattern)) { 
    alert("Valid"); 
    } else { 
    alert("New "+jVal.replace(!(pattern),"")); 
       } 
    }); 
    }); 
}); 

ただし、置換機能はこのようには機能しません。

答えて

5

^すぐ後に開く角括弧書き込むことによってnegated character classを使用してください:^は、通常の意味とは異なる特別な意味を持っていることが(通常はそれがマッチする正規表現でありここで

/[^a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g 

を線の始まり)。

だからあなたの修正コードは次のようになります。

var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;[email protected]_]/g; 
// ... 
alert("New " + jVal.replace(pattern, "")); 

をもreplaceを呼び出すと、実際に元の文字列を変更しないことに注意してください - それは、文字列の変更されたコピーを返します。あなたがjValの値を変更したい場合、あなたはそれを再割り当てする必要があります。

jVal = jVal.replace(pattern, ""); 
+0

ただ、アスカーに明確にすること、あなたがこれを行う必要があり、単に ''置き換える(パターン、「」)を呼び出します - もちろん、ブール値を無効にするパターンでは、RegExpの代わりに 'replace'に' false'を渡すことになります。 –

+0

@Ken Franqueiro:ありがとうございました。 –

関連する問題