3

( OWASP Regex Repository )からのさまざまなデータ型を検証するための正規表現を見ていました。

そこにある正規表現の 1 つが呼び出されsafetext、次のようになります。

^[a-zA-Z0-9\s.\-]+$

私の最初の質問は次のとおり
です。この正規表現は正しいですか?

補足的な質問
この正規表現リポジトリがまったく良い場合は?

更新
私は主にエスケープされていないことに興味があります.

4

1 に答える 1

3

リンクされたページの正規表現の説明には、「小文字と大文字とすべての数字」と書かれています。ただし、正規表現^[a-zA-Z0-9\s.\-]+$ではスペース、ピリオド、ハイフンも使用できます。

正規表現は、文字列に英数字、空白、ピリオド、およびハイフンのみが含まれていること、および文字列が空でないことを確認します。私は文脈に精通していませんが、セーフテキストと名付けた理由は、(テキスト領域で通常使用される文字を許可しながら)山括弧を許可しないため、スクリプトの挿入を防ぐためだと思います.

ピリオド.は文字クラス内のメタ文字ではありません[]。したがって、角かっこ内でピリオドをエスケープする必要はありません。

文字クラス内の特殊文字またはメタ文字は、閉じ括弧 ( ) ]バックスラッシュ ( \)、キャレット ( ^)、およびハイフン ( -) のみです。通常のメタ文字は、文字クラス内の通常の文字であり、バックスラッシュでエスケープする必要はありません。

ほとんどの正規表現では、ハイフンを文字クラスの先頭または末尾に配置する限り、エスケープされていないハイフンを使用できます。のハイフン[!#@-]はリテラルですが、の[!#-@]はそうではありません。最初のものは 4 つの記号の 1 つを意味し、2 番目のものはと!の ASCII 値の間 (およびそれらを含む) のすべての文字、つまり ASCII 35 から 64 を意味します。#@

図書館が少しでも優れているとすれば、始めるには良い場所だと思います。必要に応じて変更することもできます。たとえば、彼らのパスワードの正規表現は、肯定的な先読みを使用して、少なくとも 1 つの小文字/大文字/数字などの出現をチェックする方法を示しています。

于 2010-05-18T07:11:38.883 に答える