2016-08-01 4 views
0

私はこの正規表現をユーザーのフルネームをチェックするために作っていました。それは一度の場所までユーザー名の最後にも数字と特殊文字を受け入れています。正規表現(JAVA)

例:

  1. Shivkant Dohaliya - TRUE
  2. Shivkant Dohaliya1 - TRUE
  3. Shivkant Dohaliyaの1- FALSE
  4. Shivkant Dohaliya1番号 - - FALSE

  5. Shivkant Dohaliya @ TRUE!
    public void usern() 
    {     
        username="^([a-zA-Z]+[ a-zA-Z]+)$";     
        pattern=Pattern.compile(username);          
        matcher=pattern.matcher(e1.getUname()); 
        if(matcher.matches()) {     
         e1.textField1.setBorder(BorderFactory.createLineBorder(Color.GREEN)); 
        } else { 
         e1.textField1.setBorder(BorderFactory.createLineBorder(Color.RED)); 
        } 
    }   
    

ケース2と3の場合も赤枠線が表示されます。

+0

が、あなたがスペース文字 – HRgiger

+2

をエスケープすることを良いかもしれません私はちょうどそれをテストし、それが期待通りに動作するので、あなたのバグは他の場所になければなりません#1が真を返す –

+0

あなたのパターンは、 –

答えて

1

たぶんあなたの代わりに、このパターンを使用する必要があります。

username="^((?:[a-Z][a-Z]+))(\s)((?:[a-Z][a-Z]+))$"; 

またはスペースで区切られた2つだけの単語をテストするための

username="^(\w+)(\s)(\w+)$"; 

..

+1

答え、特に最初の複雑な正規表現について説明できますか? – Robert

+0

構文エラーを修正し、バックスラッシュをエスケープすることもできます。 – Robert