( OWASP Regex Repository )からのさまざまなデータ型を検証するための正規表現を見ていました。
そこにある正規表現の 1 つが呼び出されsafetext
、次のようになります。
^[a-zA-Z0-9\s.\-]+$
私の最初の質問は次のとおり
です。この正規表現は正しいですか?
補足的な質問
この正規表現リポジトリがまったく良い場合は?
更新
私は主にエスケープされていないことに興味があります.
( OWASP Regex Repository )からのさまざまなデータ型を検証するための正規表現を見ていました。
そこにある正規表現の 1 つが呼び出されsafetext
、次のようになります。
^[a-zA-Z0-9\s.\-]+$
私の最初の質問は次のとおり
です。この正規表現は正しいですか?
補足的な質問
この正規表現リポジトリがまったく良い場合は?
更新
私は主にエスケープされていないことに興味があります.
リンクされたページの正規表現の説明には、「小文字と大文字とすべての数字」と書かれています。ただし、正規表現^[a-zA-Z0-9\s.\-]+$
ではスペース、ピリオド、ハイフンも使用できます。
正規表現は、文字列に英数字、空白、ピリオド、およびハイフンのみが含まれていること、および文字列が空でないことを確認します。私は文脈に精通していませんが、セーフテキストと名付けた理由は、(テキスト領域で通常使用される文字を許可しながら)山括弧を許可しないため、スクリプトの挿入を防ぐためだと思います.
ピリオド.
は文字クラス内のメタ文字ではありません[]
。したがって、角かっこ内でピリオドをエスケープする必要はありません。
文字クラス内の特殊文字またはメタ文字は、閉じ括弧 ( ) 、
]
バックスラッシュ (\
)、キャレット (^
)、およびハイフン (-
) のみです。通常のメタ文字は、文字クラス内の通常の文字であり、バックスラッシュでエスケープする必要はありません。
ほとんどの正規表現では、ハイフンを文字クラスの先頭または末尾に配置する限り、エスケープされていないハイフンを使用できます。のハイフン[!#@-]
はリテラルですが、の[!#-@]
はそうではありません。最初のものは 4 つの記号の 1 つを意味し、2 番目のものはと!
の ASCII 値の間 (およびそれらを含む) のすべての文字、つまり ASCII 35 から 64 を意味します。#
@
図書館が少しでも優れているとすれば、始めるには良い場所だと思います。必要に応じて変更することもできます。たとえば、彼らのパスワードの正規表現は、肯定的な先読みを使用して、少なくとも 1 つの小文字/大文字/数字などの出現をチェックする方法を示しています。