2014-10-30 2 views
0

Я написал программу Java для проверки адреса электронной почты, но эта программа работает неправильно. Например: всякий раз, когда мы вводим ввод как «1» (исключая двойные кавычки), мы получаем вывод как «true», но правильный вывод должен быть «false». Пожалуйста, помогите, как я буду ошибаться.Ошибка в программе электронной почты Verfier

/*This is a java program to verify email address*/ 

import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class EmailVerifyer { 

    public boolean isEmail(String email) { 
     Pattern p = Pattern 
      .compile("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,3})$"); 
     Matcher m = p.matcher(email); 
     if (!m.matches()) 
      return true; 
     else 
      return false; 

    } 

    public static void main(String args[]) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("Enter an email which you would like to verify for correctness: "); 
     String email = scanner.nextLine(); 
     EmailVerifyer emailVerifyer = new EmailVerifyer(); 
     System.out.println("Output: "); 
     System.out.println(emailVerifyer.isEmail(email)); 
    } 
} 

ответ

0

Заменить

if(!m.matches()) 

с

if(m.matches()) 
+0

Это не 'return m.matches();' clearer хотя? – icebat

+0

Это всего лишь минимальное изменение, чтобы заставить его работать один персонаж :) – matcheek

0

заменить

Pattern p = Pattern.compile("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,3})$"); 

с

Pattern p = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 
Смежные вопросы