数字で始まり、04
数字のみを含むすべての文字列を一致させるために、次のように機能しますか?
Regex.IsMatch(str, "^04[0-9]+$")
または、別のブラケットのセットが必要ですか?
Regex.IsMatch(str, "^04([0-9])+$")
でRegex
:
[character_group]
の任意の 1 文字に一致しcharacter_group
ます。
\d
任意の 10 進数に一致します。
+
前の要素に 1 回以上一致します。
(subexpression)
一致した部分式をキャプチャし、序数を割り当てます。
^
一致は、文字列または行の先頭から開始する必要があります。
$
一致は、文字列\n
の末尾か、行または文字列の末尾の前で発生する必要があります。
このコードが役立つように:
Regex.IsMatch(str, "^04\d+$")
すべてのコードが正しく動作します。
最初の正規表現は正しいですが、2 番目の正規表現は正しくありません。最初の正規表現と同じものに一致しますが、その過程で多くの不必要な作業を行います。見てみな:
Regex.IsMatch("04123", @"^04([0-9])+$")
この例では、1
はグループ #1 でキャプチャされ、 によって上書きされるだけ2
です3
。量指定子をキャプチャ グループに追加することは、ほとんど良い考えではありません。詳細な説明については、こちらをお読みください。
しかし、おそらくそれはあなたが求めている優先ルールです。量指定子は連結よりも優先度が高いため、文字クラスを括弧で分離する必要はありません (そうしている場合)。