文字列があり、その文字列を検証して、'/''\''&'';'などの特定の文字が含まれていてはならないようにします。など...どうすれば一度にすべてを検証できますか?
49738 次
8 に答える
16
これは正規表現で解決できます!
mystring = "hello"
yourstring = "bad & string"
validRegEx = /^[^\\\/&]*$/
alert(mystring.match(validRegEx))
alert(yourstring.match(validRegEx))
正規表現と照合すると、問題がない場合は文字列が返され、無効な場合はnullが返されます。
説明:
- JavaScript RegExリテラルは文字列のように区切られますが
/
、引用符('s)の代わりにスラッシュ('s)が使用されます"
。 - 原因の最初と最後の文字により、
validRegEx
文字列の一部ではなく文字列全体と一致し、カラットが文字列を最初に固定し、ドル記号を最後に固定します。 - 角かっこ(
[
と]
)の間の部分は文字クラスであり、クラス内にある限り、どの文字とも一致します。その中の最初の文字であるカラットは、文字クラスで言及されていない文字と一致するように、クラスが否定されることを意味します。省略された場合、クラスは指定された文字と一致します。- 次の2つのシーケンスは
\\
、\/
バックスラッシュ自体が他の何かのエスケープシーケンスになるため、バックスラッシュでエスケープされます。フォワードスラッシュは、パーサーを混乱させて、正規表現の終わりに到達したと見なします(引用符をエスケープするのとまったく同じです)。文字列)。 - アンパサンド(
&
)には特別な意味はなく、エスケープされていません。
- 次の2つのシーケンスは
- 残りの文字であるクリーネ閉包(
*
)は、前の文字が0回以上一致する必要があることを意味します。これにより、文字クラスは、スラッシュまたはアンパサンドではない文字をできるだけ多く食べることになります。 。一致した文字列が空でないことを確認したい場合は、プラス(+
)に置き換えることができます。
于 2009-06-16T04:56:42.323 に答える
4
これは、 Javascriptの検証に関する優れた記事です。サーバー側でも検証する必要があることを忘れないでください。Javascript検証は簡単に回避できるため、SQLインジェクションやXSS攻撃の防止などのセキュリティ上の理由から使用しないでください。
于 2009-06-16T04:52:41.697 に答える
2
正規表現を学習するか、(一度に 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"
于 2009-06-16T04:58:30.467 に答える
1
正規表現を使用して、テストメソッドを使用できます。
function validString(input){
return !(/[\\/&;]/.test(input));
}
validString('test;') //false
于 2009-06-16T04:56:53.663 に答える
0
正規表現を使用できます。たとえば、文字列が一致する場合:
[\\/&;]+
その後、それは無効です。見てください:http: //www.regular-expressions.info/javascriptexample.html
于 2009-06-16T04:53:18.310 に答える
0
おそらく正規表現を使用できます。
于 2009-06-16T04:53:23.660 に答える
0
他の人が答えたように、これは正規表現で解決できますが、サーバー側の値も確認することを忘れないでください。ユーザーが JavaScript を有効にしているという保証はありません。ユーザー入力を信用しないでください。
于 2009-06-16T05:00:52.977 に答える