2009-06-16 17 views
2

文字列があり、その文字列を検証して、 '/' '\' '' '&' ''のような特定の文字を含むべきではないことを確認したいのですが、 etc ...どうすれば一度にそれを行うことができますか?Javascript String Validation

+2

許可されていない文字のブラックリストをチェックするのではなく、許可されている文字のホワイトリストと照合する方が良いでしょう。英数字のみを許可します。 –

答えて

13

これは正規表現で解決できます。

mystring = "hello" 
yourstring = "bad & string" 

validRegEx = /^[^\\\/&]*$/ 

alert(mystring.match(validRegEx)) 
alert(yourstring.match(validRegEx)) 

正規表現との照合は、文字列が正常であればそれを返し、無効な場合はnullを返します。

説明:

  • JavaScriptの正規表現リテラルは文字列のように区切られますが、スラッシュ(/年代)の代わりに、引用符("年代)とされています。
  • validRegExの最初と最後の文字は、一部だけではなく文字列全体と一致させます。カラットは先頭にアンカーし、最後にドル記号を付けます。
  • 角括弧([])の間の部分は、文字クラスであり、クラス内にある限り、どの文字にも一致します。その中の最初の文字であるカラットは、クラスがネゲートされていることを意味し、文字クラスに記述されていない文字と一致することを意味します。省略された場合、クラスは指定された文字と一致します。
    • 次の二つの配列、\\\/自身でバックスラッシュは、何か他のエスケープシーケンスになるので、バックスラッシュはエスケープされ、そしてスラッシュは、正規表現の末尾に達していたことを考えることにパーサを混乱させる、 (文字列の引用符をエスケープするのと全く同じです)。
    • アンパサンド(&)には特別な意味はなく、エスケープされていません。
  • 残りの文字、クリーネ閉包、(*)何でも、それが0回以上一致しなければならない前に付いていることを意味し、文字クラスが前方でないなど、多くの文字やバックスラッシュを食べるようになるように、またはアンパサンド、何も見つからない場合は何も含みません。一致する文字列が空でないことを確認したい場合は、プラス(+)に置き換えることができます。
+0

Ummm ... JavaScript regexには 'match'関数がなく、' test'だけありません。 –

+0

@LawrenceDol: '.match()'は 'RegExp'ではなく' String'で使用されます。あなたはそれを試して何が起こるのですか? – SingleNegationElimination

+0

@シンガー:OK、その微妙なことは忘れてしまった。ここでは、正規表現の観点からの解決策を探しています。ありがとう。 –

5

正規表現を使用します。

Mozillla.orgのthis guideを参照してください。このarticleも、JavaScriptの正規表現をよく紹介しています。

3

HereはJavascript検証の良い記事です。サーバー側でも検証する必要があることを覚えておいてください。 Javascriptの検証は簡単に回避することができるため、SQLインジェクションやXSS攻撃の防止などのセキュリティ上の理由で決して使用するべきではありません。

1

あなたは正規表現で、テストメソッドを使用することができます。

function validString(input){ 
    return !(/[\\/&;]/.test(input)); 
} 

validString('test;') //false 
1

あなた正規表現を学ぶことができる、または(あなただけ一度に一つの文字をチェックしている場合、おそらく単純)あなたが持っている可能性を文字のリストとその後、文字列からそれぞれを削除するために何らかの種類のsanitizeがあります。それでは

var myString = "An /invalid &string;"; 
var charList = ['/', '\\', '&', ';']; // etc... 

function sanitize(input, list) { 
    for (char in list) { 
     input = input.replace(char, ''); 
    } 
    return input 
} 

sanitize(myString, charList) // returns "An invalid string" 
0

他の人はあなたが正規表現でこれを解決するだけでなく、値のサーバー側をチェックすることを忘れないことができます答えてきたように。ユーザーがJavaScriptを有効にしているという保証はありません。ユーザーの入力を信頼しないでください!