5

テキストエリアを検証したいのですが、正規表現を取得できません(それを理解するのに1日とたくさんのチュートリアルが必要でした)。

基本的には、すべて (改行とチャリオットを含む) を許可できるようにしたいと考えていますが、悪意のある可能性のある文字 (セキュリティ違反につながるもの) は許可します。許可されていない文字はほとんどないため、ホワイト リストよりもブラック リストを作成する方が理にかなっていると思います。

私の質問は次のとおりです。正規表現の標準的な「すべて以外」は何ですか?

私はjavascriptとjqueryを使用しています。

私はこれを試しましたが、うまくいきません(ひどいです、私は知っています..):

var messageReg = /^[a-zA-Z0-9éèêëùüàâöïç\"\/\%\(\).'?!,@$#§-_ \n\r]+$/;

ありがとうございました。

4

3 に答える 3

21

文字セット (たとえば、句読点など) を除外する場合は、次^のような正規表現で文字セットの先頭に演算子を使用します。

/[^.?!]/

.これは、、、?または以外の任意の文字に一致します!

于 2012-08-23T18:14:03.593 に答える
8

^括弧内の最初の文字として theを使用して、その[]内容を否定できます。

/^[^abc]*$/

これは、「最初から最後まで、ab、またはc.」を意味します。

于 2012-08-23T18:14:47.493 に答える
1

Esailja が述べたように、これは実際のセキュリティには何の役にも立ちません。

あなたが言及したコードは、ほとんど否定されたセットです。murgatroid99 が言及したように^、括弧内に入ります。したがって、正規表現は、そのリストにないものと一致します。しかし、本当にこれらの文字を取り除きたいように見えるので、正規表現を否定する必要はありません。

コードは次のようになります。

str.replace(/[a-zA-Z0-9éèêëùüàâöïç\"\/\%\(\).'?!,@$#-_ \n\r]/g, "");

つまり、正規表現のすべての文字を削除します。

しかし、それはあなたが保持したくないと言っているa-zA-Z0-9のですが、それらを削除してもよろしいですか?

また、クロムは正規表現で § が好きではありません\x。文字の 16 進コードと共にを使用する必要があります。

于 2012-08-23T18:17:03.023 に答える