-6

「REGEX」に出くわしましたが、それによる記号の使用法がよくわかりません。例...その他多数

rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

上記を使用して電子メールの検証を行い、機能しますが、私が言うように、それがどのように機能するかを完全には理解していません! それについて説明している簡単なチュートリアルやウェブサイトを持っている人はいますか?

Float検証のために自分で書くつもりだからです。

小数点文字 (.) および長さ = 5 の 0 ~ 9 (数字のみ) を受け入れます。

例: 99.9

4

5 に答える 5

7

文字列の先頭:

^

文字列のこの部分には、AZ、az、0 ~ 9、アンダースコア、ハイフン、およびピリオドの文字を含めることができます。

([A-Za-z0-9_\ -\ .])

前のルールセットを使用して 1 つ以上の文字に一致します。

+

「@」で続ける:

\@

ピリオドを続ける:

\ .

文字列のこの部分には、AZ および az の文字を含めることができ、長さは 2、3、4 文字のいずれかでなければなりません。

([A-Za-z]{2,4})

文字列の終わり:

$

于 2012-09-09T18:26:51.970 に答える
2

ご存じのとおり、正規表現は 2 つの/文字の間で定義されます。

正規表現^の最初は文字列の先頭を示す文字なので、途中からは一致しません。

次に、ブレース内でグループが定義されます()。これにより、サブパターンを作成して部分一致を返すことができます。あなたの[]場合に積極的に一致する文字のリストを示しますA-Za-z0-9_\-\.。したがって、基本的にすべての文字、数字、アンダースコア、ダッシュ、およびドット文字。は+、このグループが 1 つ以上のオカレンスに一致することを示します。

次に、@記号は によって照合され\@\は次の文字をエスケープするため、デフォルトの機能は無視され、文字自体が照合されます。

次に、最初のグループのような別のグループがあり、.文字が一致し、トップ レベル ドメイン (長さが 2 ~ 4 の文字のみ) が一致します。

は文字列の$末尾を意味するため、先頭だけが一致するわけではありません。

于 2012-09-09T18:31:29.830 に答える
1

次のWebサイトをお勧めします:http://www.regex101.com

正規表現の説明へのリンクは次のとおりです:http://regex101.com/r/aE3yB5

テスト文字列を挿入して式をテストすることもできます。

ウェブサイトは与えられた表現を説明し、もしあればそれらの中に誤りを見つけます。

これがお役に立てば幸いです。

于 2012-09-09T19:23:33.847 に答える
1
  • 囲んでいる /slashes/ は、パターンの開始と終了を定義します
  • 「^」は文字列の先頭を意味します
  • (括弧) 内のものは、別のグループ/パーツとして一致します。
  • [括弧]内の文字は「これらのいずれかに一致する」を意味します
  • "+" は、「1 回以上前にあったものに一致する」ことを意味します。
  • 「\x」はエスケープを意味し、「*」などの正規表現言語の文字をキャッチできるようにします
  • \@ は、エスケープされた「@」文字を意味します (常に必要というわけではありません)。
  • {x,y} は、「x 回から y 回前に来たものに一致する」ことを意味します
  • 「$」は文字列の終わりを意味します

したがって、パターンは次のことを意味します。

  • 1 つ以上の URL セーフ文字 (英数字、「.」および「_」) で始まる文字列
  • 次に「@」
  • 次に、1 つ以上の URL セーフ文字をもう一度
  • 次にドット「。」
  • 最後に、ラテン アルファベットの 2 ~ 4 文字 (「com」、「eu」、「info」など)

...メールアドレスです

ここで試してみてください: RegExr

于 2012-09-09T18:35:53.423 に答える
1

優れたチュートリアルとして、このリンクから始めることができます。このリンクは正規表現について一般的な用語で説明していますが、異なる言語で使用される異なる正規表現エンジン間で正規表現の構文と動作に微妙な違いがあることに注意する必要があります (リンクも説明しています)。

正規表現の内訳は次のとおりです。

  • //囲んでいるスラッシュは、それが正規表現パターンであることを示します。
  • ^$これは、行の開始と終了を示します。
  • ([A-Za-z0-9_\-\.])+角括弧[]は、角括弧内にリストされている可能性のある文字のうちの 1 つの文字に基本的に一致する文字クラスを示します。また、+ このクラス外の量指定子は、この文字クラスが 1 回以上繰り返される可能性があることを示します。正規表現では、文字クラスは、単語文字 (英数字またはアンダースコア)、ハイフン、またはドットである可能性がある一致を表します。これは、 のように書き換えることができます([-\w.]+)。文字クラスの特殊文字をバックスラッシュでエスケープする必要がないことがわかります。電子メール アドレスの検証では、これは「local-part」との一致を試みます。
  • \@これは、電子メール アドレスの料金記号と一致することを示します。これは実際にはバックスラッシュでエスケープする必要はありません。
  • ([A-Za-z0-9_\-\.])+これは「local-part」と同じことを示しますが、電子メールのドメイン アドレスとの照合を試みるだけです。
  • \.これは、ドメインとトップレベル ドメインの間の期間を示します。ピリオドは任意の文字 (改行を除く) を表す正規表現エンジンの予約語であるため、これはバックスラッシュでエスケープする必要があります。
  • ([A-Za-z]{2,4})これは、長さが 2 ~ 4 文字のアルファベットの大文字と小文字を区別しない文字列を示します。これは、com、org などのトップ レベル ドメイン名を表します。

したがって、上記の正規表現は^([-\w.]+)@([-\w.]+)\.([A-Za-z]{2,4})$. 括弧内に量指定子を
配置しました。+使用する最も一般的な理由()は、後で抽出できるようにパターンの一部をキャプチャすることです。したがって、メールアドレスの「ローカル部分」または「ドメイン」をキャプチャする必要がある場合は、正規表現のように最初の文字のみに一致するよりも、繰り返される文字クラスをキャプチャする方が理にかなっています。

この正規表現の動作は、RegexPalで確認できます。


フロートのマッチングに関しては、これについてはすでにここで説明されています。
しかし、float に 5 の精度が必要な場合は、まったく別の話です。正の先読み
を使用するこれを試してください:

^[-+]?(?=\d+(\.\d+)?)(\.?\d){1,5}$

ここでそれで遊んでください

于 2012-09-09T18:43:16.990 に答える