「+99.99」、「-99.99」、「99.99」のいずれかの文字列に一致するC#の正規表現を探しています。同じ正規表現は、文字列「+-99.99」と一致してはなりません。誰かが答えを提案できますか?
4 に答える
以下は私のために働いた:
String regex = "^(\\+|-)?99\\.99$";
String str1 = "-99.99";
String str2 = "+99.99";
String str3 = "99.99";
String str4 = "+-99.99";
System.Console.WriteLine(Regex.IsMatch(str1, regex));
System.Console.WriteLine(Regex.IsMatch(str2, regex));
System.Console.WriteLine(Regex.IsMatch(str3, regex));
System.Console.WriteLine(Regex.IsMatch(str4, regex));
System.Console.ReadKey();
収量:
真真真偽
説明: ^
文字列の先頭から照合を開始するように正規表現エンジンに指示します。(\\+|-)
これは、+
または-
文字を示します。これ+
は正規表現構文の特殊文字であるため、エスケープする必要があります。OR演算子は|
文字で示されます。
?
は、+
または文字が存在する場合と存在しない場合があることを示します(-
先行するものの0または1インスタンスに一致します)。
99\\.99
文字列を示します99.99
。これ.
も正規表現構文の特殊文字であるため、エスケープする必要があります。文字は、文字列の$
最後で一致を停止するように正規表現エンジンに指示します。
いくつかのオンラインテスターで正規表現をテストできます(正規表現を学ぶのに非常に役立ちます)。私のお気に入りは次のとおりです。http://www.regexplanet.com/advanced/dotnet/index.htmlおよびhttp://regexhero.net/tester/
正または負の99.99のみに一致させたい場合は、を使用できます[+-]?99\.99
。この正規表現は99.99に一致し、オプションで前に+
or-
文字が付きます。任意の数値に一致させたい場合は、オプションで小数点以下2桁まで使用できますが、を使用できます[+-]?\d{1,}(\.\d{0,2})?
。
いつものように、正規表現を文字列全体にのみ一致させたい場合は、先頭^
に追加する必要があります。$
^[+-]?99\.99$
これを試してください:
[+-]?\d+\.\d+
説明:
[+-]? any character of: '+', '-'
(optional, matching the most amount possible)
\d+ digits (0-9)
(1 or more time, matching the most amount possible)
\. '.'
\d+ digits (0-9)
(1 or more times, matching the most amount possible)