【发布时间】:2017-02-12 19:59:28
【问题描述】:
当输入无效时,我正在尝试向用户显示一些消息。
我写了这个正则表达式来验证这个模式:(10 个字符的名称)(0-9 之间的数字)
例如布鲁诺 3
^([\w]{1,10})(\s[\d]{1})$
当用户输入任何无效字符串时,是否可以知道哪个组无效并打印消息? 类似的东西:
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;
}
}
【问题讨论】:
-
[\d]{1}可以是\d -
你想出了什么代码,有什么问题?
-
@WiktorStribiżew 我编辑了问题
-
你输入的字符串长度是多少
-
由于没有内置功能可以知道正则表达式的哪一部分失败,您只能使用 2 个
regex_searches 解决它,一个使用^\w{1,10},第二个使用\s\d$正则表达式。
标签: c++ regex visual-c++