数字で始まり、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。量指定子をキャプチャ グループに追加することは、ほとんど良い考えではありません。詳細な説明については、こちらをお読みください。
しかし、おそらくそれはあなたが求めている優先ルールです。量指定子は連結よりも優先度が高いため、文字クラスを括弧で分離する必要はありません (そうしている場合)。