21

この正規表現"^[0-9]+\.?[0-9]*$")をビジュアル C++ の double の数値または整数に一致させましたが、機能していないようです。何か案は?

これは私がコードを適用する方法です:

if (System::Text::RegularExpressions::Regex::IsMatch(e0, "^[0-9]+\.?[0-9]*$")){
     e0_val = System::Convert::ToDouble(e0);
}
4

5 に答える 5

20

正規表現自体に問題はありません。それはあなたのエスケープです。\これは C++ 文字列エスケープ文字でもあるため、文字をダブル エスケープする必要があります。

1.さらに、この正規表現が有効な浮動小数点数であると考えるエッジ ケースがあります。/^[0-9]+(\\.[0-9]+)?$したがって、その可能性を排除するほうがよいかもしれません。

于 2012-05-09T13:22:26.120 に答える
0
(\d+)?\.(\d+)?

上記の正規表現は、 "45.5""12"などの double に対して機能します。、「.12」

于 2020-12-14T20:07:06.553 に答える