Android-實(shí)現(xiàn)對(duì)郵箱的驗(yàn)證
由于Android開(kāi)發(fā)中經(jīng)常會(huì)使用到表單,還有相關(guān)的提交,驗(yàn)證等等。接下來(lái)是一個(gè)關(guān)于EditText的郵箱格式驗(yàn)證:
那么首先要有一個(gè)布局文件
相關(guān)代碼:
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="30dp"
android:layout_marginTop="167dp"
android:text="郵箱"
tools:layout_editor_absoluteX="55dp"
tools:layout_editor_absoluteY="170dp" />
<EditText
android:id="@+id/ed_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@+id/textView"
android:layout_marginEnd="21dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
tools:layout_editor_absoluteX="135dp"
tools:layout_editor_absoluteY="22dp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="提交"
tools:layout_editor_absoluteX="118dp"
tools:layout_editor_absoluteY="217dp" />
郵箱驗(yàn)證需要的函數(shù)isEmail():
郵箱的格式應(yīng)改為:數(shù)字或者字母@數(shù)字或字母.數(shù)字或字母
public static boolean isEmail(String email){
if (null==email || "".equals(email)) return false;
//Pattern p = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}"); //簡(jiǎn)單匹配
Pattern p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");//復(fù)雜匹配
Matcher m = p.matcher(email);
return m.matches();
}
接下來(lái)就要在MainActivity中實(shí)現(xiàn)邏輯了:
簡(jiǎn)單的通過(guò)id獲取各個(gè)控件,還有其他的就不多說(shuō)了阁苞。主要是實(shí)現(xiàn)對(duì)isEmail()函數(shù)的調(diào)用困檩。
public class MainActivity extends AppCompatActivity {
//聲明需要的控件
private static EditText ed_email;
private Button button;
//由于Android邊編譯邊生成的原理,將匹配字符串放入全局那槽,作為靜態(tài)變量可以提高效率
public static Pattern p =
Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setFullScreen();
allWindow();
//實(shí)體化控件
ed_email=(EditText)findViewById(R.id.ed_email);
button=(Button)findViewById(R.id.button);
//對(duì)button添加點(diǎn)擊事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//調(diào)用編寫(xiě)的isEmail()函數(shù)
//獲取到輸入的內(nèi)容并轉(zhuǎn)換為字符串形式窗看,這樣才可以進(jìn)行匹配,且郵箱格式不能太長(zhǎng)倦炒,字符串長(zhǎng)度31以?xún)?nèi)
//按照實(shí)際需要可以添加不同的事件
if (isEmail(ed_email.getText().toString().trim()) && ed_email.getText().toString().trim().length()<=31){
Toast.makeText(MainActivity.this,"郵箱驗(yàn)證成功",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this,"郵箱格式錯(cuò)誤",Toast.LENGTH_SHORT).show();
}
}
});
}
//驗(yàn)證函數(shù)優(yōu)化版
public static boolean isEmail(String email){
if (null==email || "".equals(email)) return false;
Matcher m = p.matcher(email);
return m.matches();
}
}
以上就是對(duì)郵箱的驗(yàn)證显沈,第一次寫(xiě)博客希望能共同學(xué)習(xí),共同提高