当输入无效时,我正试图向用户显示一些消息。
我写了这个正则表达式来验证这个模式:( 10个字符的名字)(0-9之间的数字)
e.g。布鲁诺3
if (regex_match(user_input, e))
{
cout << "input ok" << endl;
}
else
{
if (group1 is invalid)
{
cout << "The name must have length less than 10 characters" << endl;
}
if (group2 is invalid)
{
cout << "The command must be between 0 - 9" << endl;
}
}
当用户输入任何无效字符串时,是否可以知道哪些组无效并打印消息? 这样的事情:
{{1}}
答案 0 :(得分:1)
我认为您希望与1 to 10 character
匹配,然后匹配space
个,然后匹配digit
但只有2个组
这是你想要的:
^([a-zA-Z]{1,10})( \d)$
注意
\w
相当于[a-zA-Z0-9_]
因此,如果您只需要10个字符,则应使用[a-zA-Z]
而不是\w
C ++代码
std::string string( "abcdABCDxy 9" );
std::basic_regex< char > regex( "^([a-zA-Z]{1,10})( \\d)$" );
std::match_results< std::string::const_iterator > m_result;
std::regex_match( string, m_result, regex );
std::cout << m_result[ 1 ] << '\n'; // group 1
std::cout << m_result[ 2 ] << '\n'; // group 2
输出
1abcdABCDxy
9