「S123456」のように、文字列が S、R、または V のいずれかの 1 文字で始まり、その後に 6 桁の数字が続くことを確認するために、C# で正規表現を記述する必要があります。使用しようとしている正規表現は次のとおりです。
@"(S|R|V)[0-9]{6}?"
しかし、「S1234567」のように 1 桁が多すぎる文字列を渡すと、失敗します。ここで何が間違っていますか?
達成したい内容に応じて、次の 3 つのオプションがあります。
文字列を一致させるためだけに:
[SRV]\d{6}
その文字列を分離された「単語」として見つけるには:
\b[SRV]\d{6}\b
正規表現が完全な文字列と一致するようにするには(これが必要だと思います):
^[SRV]\d{6}$
編集:
文字列内のパターンを探しているだけなので、正規表現は「失敗」します(私の最初の例のように)。文字列がS123456 7 の場合、エンジンは太字の部分 (S から 6 まで) と一致するため、成功を報告します。文字列にパターンのみを含め、他には何も含めない (つまり、文字列が最初から最後までパターンに一致する) 場合は、アンカー (私の 3 番目の例) を使用する必要があります。
var regex = new Regex(@"^[SRV]\d{6}$");