2011-05-25 72 views
91

如何查看edittext的文字是不是电子邮件地址或不使用javascript正则表达式? 这里我用inputtype="textEmailAddress"这是工作,但没有显示错误信息。如何检查edittext的文本是否为电子邮件地址?

+2

得到Patterns.java的源代码当然PointerNull的答案在这里是合理的,现代的答案? – Fattie 2014-05-23 11:17:49

+1

@JoeBlow是的,我同意,但“提问者”可以改变约定的答案的时间有限。...... – giulio 2015-08-24 06:25:17

回答

189
/** 
* method is used for checking valid email id format. 
* 
* @param email 
* @return boolean true for valid false for invalid 
*/ 
public static boolean isEmailValid(String email) { 
    String expression = "^[\\w\\.-][email protected]([\\w\\-]+\\.)+[A-Z]{2,4}$"; 
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(email); 
    return matcher.matches(); 
} 

在此函数中传递您的编辑文本字符串。

右电子邮件验证你需要服务器端认证


注意现在有Android中内置的方法,请参见下面的答案。

+0

谢谢你Droid我已经做到了。 – 2011-05-25 06:10:39

+1

这是正常工作。 – 2012-01-27 13:16:07

+7

'String'实现'CharSequence',所以我认为从'email'到'inputStr'的转换是多余的。 – yoshi 2012-08-02 15:11:43

0

用于电子邮件验证试试这个。

public boolean checkemail(String email) 
{ 

    Pattern pattern = Pattern.compile("[email protected]+\\.[a-z]+"); 
    Matcher matcher = pattern.matcher(email); 
    return matcher.matches(); 

} 
+0

sir请将您对[email protected]+*&.com的验证作为电子邮件 – 2012-01-27 13:15:21

322

在Android 2.2+使用:

boolean isEmailValid(CharSequence email) { 
    return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 
} 
+0

真棒!真的有帮助 – 2017-09-01 09:27:02

12

我写了一个扩展的EditText一个库,它本身支持一些验证方法,实际上是非常灵活的。

目前,我写,本身支持(通过XML属性)验证方法是:

  1. 正则表达式:自定义正则表达式
  2. 数字:一个只有数字领域
  3. alpha:仅针对alpha字段
  4. alpha数字:猜怎么着?
  5. 电子邮件:检查该字段是一个有效的电子邮件
  6. 的信用卡:检查该字段包含使用卢恩算法
  7. 电话有效的信用卡:检查该字段包含一个有效的电话号码
  8. 则domainName:检查该字段包含一个有效的域名(总是通过在API级别测试< 8)
  9. ip地址:检查该字段包含一个有效的IP地址 WEBURL:检查该字段包含一个有效的URL(始终传递至API等级< 8测试)
  10. NOCHECK:它不检查任何东西。(默认)

您可以点击此处查看:https://github.com/vekexasia/android-form-edittext

希望你喜欢它:)

在我联系你就可以还找到电子邮件验证一个例子页面。我会在这里复制的相对片段:

<com.andreabaccega.widget.FormEditText 
     style="@android:style/Widget.EditText" 
     whatever:test="email" 
     android:id="@+id/et_email" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/hint_email" 
     android:inputType="textEmailAddress" 
     /> 

还有一个测试应用程序,展示库的可能性。

这是验证电子邮件字段的应用程序的屏幕截图。

email validation done thorugh xml+library

2

这里的电子邮件是您的电子邮件ID。

public boolean validateEmail(String email) { 

    Pattern pattern; 
    Matcher matcher; 
    String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    pattern = Pattern.compile(EMAIL_PATTERN); 
    matcher = pattern.matcher(email); 
    return matcher.matches(); 

    } 
+0

当前电子邮件RFC的作者John Klensin有一个您拒绝的电子邮件地址,它包含一个+号 – arnt 2013-11-28 10:44:14

1

的简单方法

private boolean isValidEmail(String email) 
{ 
    String emailRegex ="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    if(email.matches(emailRegex)) 
    { 
     return true; 
    } 
    return false; 
} 
1

公共静态布尔isEmailValid(字符串电子邮件){ 布尔的isValid = FALSE;

String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" 
      + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\." 
      + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" 
      + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$"; 
    // "^[\\w\\.-][email protected]([\\w\\-]+\\.)+[A-Z]{2,4}$"; 
    CharSequence inputStr = email; 

    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(inputStr); 
    if (!matcher.matches()) { 
     isValid = true; 
    } 
    return isValid; 
} 
1
I Hope this code is beneficial for you 

    public class Register extends Activity 
     { 
     EditText FirstName, PhoneNo, EmailId,weight; 
     Button Register; 
     private static final Pattern EMAIL_PATTERN = Pattern 
     .compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 


    private static final Pattern USERFIRSTNAME_PATTERN = Pattern 
     .compile("[a-zA-Z0-9]{1,250}"); 
    private static final Pattern PHONE_PATTERN = Pattern 
     .compile("[a-zA-Z0-9]{1,250}"); 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.register); 


     Register=(Button) findViewById(R.id.register); 

     FirstName=(EditText)findViewById(R.id.person_firstname); 

      PhoneNo =(EditText)findViewById(R.id.phone_no); 
      EmailId=(EditText)findViewById(R.id.email_id); 
      weight=(EditText) findViewById(R.id.weight); 

     Register.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       sFirstName= FirstName.getText().toString(); 
       sPhoneNo= PhoneNo.getText().toString(); 
       sEmailId= EmailId.getText().toString(); 
       sweight= weight.getText().toString(); 

       if(sFirstName.equals("")||sPhoneNo.equals("")||sEmailId.equals("")||sweight.equals("")) 
       { 
        if ((!CheckUsername(sFirstName))) 
        { 
        Toast.makeText(Register.this, "FirstName can not be null",Toast.LENGTH_LONG).show(); 
        } 
        else if ((!Checkphoneno(sPhoneNo))) 
         { 
        Toast.makeText(Register.this, "ENTER VALID mobile no ",Toast.LENGTH_LONG).show(); 
         } 
        else if ((!CheckEmail(sEmailId))) 
         { 
         Toast.makeText(Register.this, "ENTER VALID EMAIL ID",Toast.LENGTH_LONG).show(); 
         } 
        else if ((!Checkweight(sweight))) 
         { 
        Toast.makeText(Register.this, "ENTER Weight in kg",Toast.LENGTH_LONG).show(); 
         } 
       } 

      } 
       private boolean CheckEmail(String sEmailId) { 

        return EMAIL_PATTERN.matcher(sEmailId).matches(); 
       } 



       private boolean CheckUsername(String sFirstName) { 

        return USERFIRSTNAME_PATTERN.matcher(sFirstName).matches(); 
       } 
       private boolean Checkphoneno(String sPhoneNo) { 

        return PHONE_PATTERN.matcher(sPhoneNo).matches(); 
       } 
       private boolean Checkweight(String sweight) { 

        return Weight_PATTERN.matcher(sweight).matches(); 
       } 


     }); 
+0

谢谢它有助于解决我的问题:) – 2015-03-25 10:39:12

+0

您的欢迎... – 2015-03-25 10:55:46

11

请遵循以下步骤

步骤1:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editText_email" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_below="@+id/textView_email" 
     android:layout_marginTop="40dp" 
     android:hint="Email Adderess" 
     android:inputType="textEmailAddress" /> 

    <TextView 
     android:id="@+id/textView_email" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="30dp" 
     android:text="Email Validation Example" /> 

</RelativeLayout> 

步骤2:

import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.widget.EditText; 

步骤3:

public class MainActivity extends Activity { 

private EditText email; 

private String valid_email; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    initilizeUI(); 
} 

/** 
* This method is used to initialize UI Components 
*/ 
private void initilizeUI() { 
    // TODO Auto-generated method stub 

    email = (EditText) findViewById(R.id.editText_email); 

    email.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

      // TODO Auto-generated method stub 
      Is_Valid_Email(email); // pass your EditText Obj here. 
     } 

     public void Is_Valid_Email(EditText edt) { 
      if (edt.getText().toString() == null) { 
       edt.setError("Invalid Email Address"); 
       valid_email = null; 
      } else if (isEmailValid(edt.getText().toString()) == false) { 
       edt.setError("Invalid Email Address"); 
       valid_email = null; 
      } else { 
       valid_email = edt.getText().toString(); 
      } 
     } 

     boolean isEmailValid(CharSequence email) { 
      return android.util.Patterns.EMAIL_ADDRESS.matcher(email) 
        .matches(); 
     } // end of TextWatcher (email) 
    }); 

} 

} 
2

以下代码应该对您有用。

String email; 
check.setOnClickListener(new OnClickListener() { 


       public void onClick(View arg0) { 

        checkEmail(email); 
        if (checkMail) { 
         System.out.println("Valid mail Id"); 
        } 
       } 
      }); 

     } 
    } 

    public static boolean checkEmail(String email) { 

     Pattern EMAIL_ADDRESS_PATTERN = Pattern 
       .compile("[a-zA-Z0-9+._%-+]{1,256}" + "@" 
         + "[a-zA-Z0-9][a-zA-Z0-9-]{0,64}" + "(" + "." 
         + "[a-zA-Z0-9][a-zA-Z0-9-]{0,25}" + ")+"); 
     return EMAIL_ADDRESS_PATTERN.matcher(email).matches(); 
    } 
2

Apache Commons Validator可以像其他答案中提到的那样使用。

步骤:1)从here

步骤下载jar文件:2)添加到您的项目库

进口:

import org.apache.commons.validator.routines.EmailValidator; 

代码:

String email = "[email protected]"; 
boolean valid = EmailValidator.getInstance().isValid(email); 

并允许本地地址::

boolean allowLocal = true; 
boolean valid = EmailValidator.getInstance(allowLocal).isValid(email); 
0

您可以通过正则表达式检查

public boolean isValid(String strEmail) 
    { 
     pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 
      matcher = pattern.matcher(strEmail); 

     if (strEmail.isEmpty()) { 
      return false; 
     } else if (!matcher.matches()) { 
      return false; 
     } 
     else 
     { 
     return true; 
     } 
    } 
0
private boolean isValidEmailID(String email) { 
    String PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    Pattern pattern = Pattern.compile(PATTERN); 
    Matcher matcher = pattern.matcher(email); 
    return matcher.matches(); 
} 

For more validation click here

5

正如在回答中提到你可以使用如下的Patterns类:

public final static boolean isValidEmail(CharSequence target) { 
    if (target == null) 
     return false; 

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); 
} 

偶然的话,如果你甚至支持API级别小于8,那么您可以简单地将Patterns.java文件复制到您的项目并引用它。你可以从this link

相关问题