2

正規表現を使用して JavaScript で住所を検証したいのですが、正規表現についてあまり知りません。独自の正規表現を作成しようとしました/^[a-zA-Z\s](\d)?$/が ( )、正しく機能していないようです。

私が達成したいのは、文字、スペース、および少なくとも 1 つの数字 (必須) を許可することです。また、スラッシュを挿入する可能性/があるはずですが、必須ではありません。

誰でもそれを手伝ってもらえますか?

4

1 に答える 1

5

始めてみましょうが、正規表現に慣れるにつれて、より具体的になることに気付くでしょう。まず、正規表現を調べてみましょう。

/^[a-zA-Z\s](\d)?$/

ここで注意すべき重要なことは、この正規表現はせいぜい 2 文字の文字列にしか一致しないということです! 文字クラス は、単一[ ... ]の文字に一致します。この場合、文字と空白です。これをquantifierと呼ばれるものと組み合わせる必要があります。たとえば、 「0 個以上」、「1 個以上」、「0 個または 1 個」を意味します。他の場所で量指定子を使用しましたが、「0 または 1」の数字文字を言っています。しかし、あなたが本当に望むものは、次のようになります。 *+?(\d)?

/^[a-zA-Z\s\d\/]+$/

ここでは、「1 つ以上の」文字、空白、数字、またはスラッシュを指しています (スラッシュはバックスラッシュを使用してエスケープする必要があることに注意してください)。

最後に、「少なくとも 1 つの」数字が必要だとします。これは、「ルックアラウンド アサーション」と呼ばれる正規表現のより高度な構成を使用して実現できます。あなたはこれを求めている:

/^(?=.*\d)[a-zA-Z\s\d\/]+$/

特に、これは肯定的な先読みアサーションであり、自分で調べることができます。先読みアサーションなしでこれを行う別の方法は次のとおりです。

/^[a-zA-Z\s\d\/]*\d[a-zA-Z\s\d\/]*$/

これは明らかにより複雑ですが、これを理解できれば、正規表現を十分に理解できていることがわかります。幸運を!

于 2012-10-31T07:58:26.673 に答える