2

「S123456」のように、文字列が S、R、または V のいずれかの 1 文字で始まり、その後に 6 桁の数字が続くことを確認するために、C# で正規表現を記述する必要があります。使用しようとしている正規表現は次のとおりです。

@"(S|R|V)[0-9]{6}?"

しかし、「S1234567」のように 1 桁が多すぎる文字列を渡すと、失敗します。ここで何が間違っていますか?

4

3 に答える 3

7

達成したい内容に応じて、次の 3 つのオプションがあります。

文字列を一致させるためだけに:

[SRV]\d{6}

その文字列を分離された「単語」として見つけるには:

\b[SRV]\d{6}\b

正規表現が完全な文字列と一致するようにするには(これが必要だと思います):

^[SRV]\d{6}$

編集:

文字列内のパターンを探しているだけなので、正規表現は「失敗」します(私の最初の例のように)。文字列がS123456 7 の場合、エンジンは太字の部分 (S から 6 まで) と一致するため、成功を報告します。文字列にパターンのみを含め、他には何も含めない (つまり、文字列が最初から最後までパターンに一致する) 場合は、アンカー (私の 3 番目の例) を使用する必要があります。

于 2013-07-11T13:26:38.043 に答える
7
var regex = new Regex(@"^[SRV]\d{6}$");
于 2013-07-11T13:23:56.343 に答える