2017-02-12 16 views
0

入力が無効な場合、ユーザーにメッセージを表示しようとしています。正規表現を使用して文字列の不一致部分を抽出する方法

私はこのパターンをvalidadeし、この正規表現を書いた:(10文字の名前)(0-9間の数)

例えばBruno 3

ユーザーが無効な文字列を入力した場合、どのグループが無効であるかを知ることができますか?そのような 何か:

私はあなたがして、その後、単一 space1 to 10 characterを一致させたい見たよう
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

'[\ d] {1}'はちょうど '\ d'です。 – 4castle

+0

あなたはどのようなコードを思いつきましたか? –

+0

@WiktorStribiżew私は質問を編集しました – Bruno

答えて

1

単一digitが、2 グループにここ

は何をしたいです:

^([a-zA-Z]{1,10})(\d)$

\wは、あなただけの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 

出力

を使用する必要がありますので、 [a-zA-Z0-9_]
に相当します
1abcdABCDxy 
9 
関連する問題