2

私のコードは現在、数字に一致する次の正規表現を使用しています。

Regex numberExpression = new Regex(@"(?<Number>\d+)");

この電流は、「1」、「100」、「1a」、「a1」などの入力文字列に対して正常に機能します....

しかし、入力文字列に文字が含まれている場合は一致しないように変更したいので、「1」、「100」は一致しますが、「1a」、「a1」は一致しません。

誰でも助けてもらえますか、これは単純な正規表現の質問であることは知っていますが、前方と後方の検索について頭を悩ませることはできません。私が試してみました:

Regex numberExpression = new Regex(@"(?<Number>^![a-zA-Z]\d+![a-zA-Z])");

しかし、それは機能せず、上記の入力のいずれとも一致しません。

4

2 に答える 2

8

正規表現はやり過ぎです。これを試して:

input.All(char.IsDigit);
于 2013-07-25T11:23:50.133 に答える
5

入力の数値部分文字列を探し、その部分文字列の前後に何もないことを確認するという、難しい方法でそれを行おうとしています。

これを行う簡単な方法は、正規表現を強制的に入力文字列全体に一致させるか、何も一致させないようにすることです。

Regex numberExpression = new Regex(@"^\d+$");

ここで、「^」は「行頭」を意味し、「$」は「行末」を意味します。

于 2013-07-25T11:31:22.880 に答える