4

の第 1 章にIntroducing regular expression、次のような正規表現があります。

^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$

ここに画像の説明を入力

^2番目は冗長に見えるので、少し混乱しています。は|2 つの選択肢\(\d{3}\)または括弧内を区切ります。また、括弧の外側^\d{3}[.-]?にはすでに a があります。これは、行頭と一致すると理解しています。そのため、2 番目の inは行頭と一致する必要はない^と思います。誰かがこれについてアイデアを持っていますか?^^\d{3}[.-]?

4

3 に答える 3

1

はい、私にも冗長に見えます。最初のアンカーで十分です。

これが私が信じている方法であり、それは部分に分解されます:

^
(
    \(\d{3}\)
    | |
    ^\d{3}[.-]?
)?
\d{3}
[.-]?
\d{4}
$
于 2013-11-05T13:04:16.453 に答える
1

はい、それは冗長で役に立ちません。まあ、それはクラッシュしません;)

^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$

正規表現の視覚化

Debuggex デモ

^文字列/行の開始をマークし、結果を作成せず、ポインタも内部的に移動されないため、式^または^^^^^^^^^すべて等しいです。

于 2013-11-05T13:16:12.270 に答える