我有一个简单的正则表达式来验证用户输入是否为整数。在C#项目中,我看到它正确验证。下面是我在C#中的代码:
string string_to_validate = Console.ReadLine();
Regex int_regex = new Regex("[0-9]");
if (int_regex.IsMatch(string_to_validate))
Console.WriteLine("Regex is match. Validation is success!");
else
Console.WriteLine("Regex is not match. Validation is fail!");
但是在C ++中我看到它正确验证了。它只能正确验证字符串的长度是1.下面是我在C ++中的代码:
std::string string_to_validate;
std::cin >> string_to_validate;
std::regex int_regex("[0-9]");
if (std::regex_match(string_to_validate,
int_regex))
std::cout << "Regex is match. Validation is success!";
else
std::cout << "Regex is not match. Validation is fail!";
请帮忙。这是C ++问题还是我的问题?
答案 0 :(得分:0)
根据MSDN,C#方法bool Regex.IsMatch(String)
指示是否在Regex中指定正则表达式 构造函数在指定的输入字符串中查找匹配项。
如果输入字符串中至少有一个数字,它将返回true
。
C ++ std::regex_match
确定正则表达式是否与整个目标匹配 字符序列
因此整个输入字符串必须包含要传递正则表达式的数字。
要在C ++中验证具有任意长度的整数的字符串,您必须使用此正则表达式:
std::regex int_regex("[0-9]+"); // '+' - quantifier '1 or more' items from range [0-9]
或
std::regex int_regex("\\d+");