android驗(yàn)證郵箱輸入是否合法
本文實(shí)例為大家分享了android驗(yàn)證郵箱輸入是否合法的具體代碼,供大家參考,具體內(nèi)容如下
下面是驗(yàn)證手機(jī)號(hào)和郵箱是否合法的方法,直接將這兩個(gè)靜態(tài)方法考入自己的項(xiàng)目中就可以用啦
public class MainActivity extends Activity implements View.OnClickListener { private Button btn; private EditText et; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); et = (EditText) findViewById(R.id.et); tv = (TextView) findViewById(R.id.tv); btn.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn: String number = et.getText().toString(); boolean judge = isMobile(number); if (judge == true) { tv.setText("手機(jī)號(hào)合法"); } else { tv.setText("手機(jī)號(hào)不合法"); } break; } } // /** // * 驗(yàn)證手機(jī)格式 // */ public static boolean isMobile(String number) { /* 移動(dòng):134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 聯(lián)通:130、131、132、152、155、156、185、186 電信:133、153、180、189、(1349衛(wèi)通) 總結(jié)起來(lái)就是第一位必定為1,第二位必定為3或5或8,其他位置的可以為0-9 */ //"[1]"代表第1位為數(shù)字1,"[358]"代表第二位可以為3、5、8中的一個(gè),"\\d{9}"代表后面是可以是0~9的數(shù)字,有9位。 String num = "[1][358]\\d{9}"; if (TextUtils.isEmpty(number)) { return false; } else { //matches():字符串是否在給定的正則表達(dá)式匹配 return number.matches(num); } } //郵箱驗(yàn)證 public static boolean isEmail(String strEmail) { String strPattern = "^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$"; if (TextUtils.isEmpty(strPattern)) { return false; } else { return strEmail.matches(strPattern); } } }
了解正則表達(dá)式
學(xué)習(xí)過(guò)程
1.概念:“正則表達(dá)式”(Regular Expression)就是一個(gè)特殊的字符串,用來(lái)匹配字符串與查找字符串
2.java基礎(chǔ)架包中:
java.util.regex 包主要由三個(gè)類(lèi)所組成:Pattern、Matcher 和 PatternSyntaxException。
3.正則表達(dá)式的作用:
1).判斷字符串的正確性
2).查找字符串
3).在其他類(lèi)特別是String中的使用
// 1.判斷字符串的正確性 // 判斷電話號(hào)碼是否是以136開(kāi)頭的11個(gè)數(shù)字的電話號(hào)碼 private void m1(String s) { // 方式一: // boolean b = Pattern.matches("136\\d{8}", "13698987654"); // 方式二: Pattern p = Pattern.compile("136\\d{8}"); Matcher m = p.matcher(s);// 正則表達(dá)式 電話號(hào)號(hào) boolean b = m.matches();// 判斷是否匹配 System.out.println(b);// true }
// 2.查找字符串中是否有兩個(gè)數(shù)字組成的子字符串 private void m3() { Pattern p = Pattern.compile("\\d{2}"); Matcher m = p.matcher("a29abbccsdf"); boolean b = m.find(); System.out.println(b);// true }
// 3.在其它類(lèi)特別是String中的使用 // 通過(guò)運(yùn)算符把字符串拆開(kāi) public void m4() { // String s = "23+234-123*234/1000"; // String[] a = s.split("\\+|\\-|\\*|/"); String s = "11+22+33*66"; String[] a = s.split("\\*"); for (String string : a) { System.out.println(string); } }
//4.示例:判斷字符串是否以ax開(kāi)頭by結(jié)尾,并且中間有僅只有一個(gè)字符 public class Test { public boolean m1(String str) { // 方式一: // Pattern p = Pattern.compile("ax.by"); // Matcher m = p.matcher(str); // boolean b = m.matches(); // 方式二 boolean b = Pattern.matches("ax.by", str); return b; } public static void main(String[] args) { Test t = new Test(); System.out.println(t.m1("axmby")); } }
4.提示1:正則表達(dá)式還可以在字符串中查找匹配的子字符串; 在其它類(lèi)中的使用…..。(后面章節(jié)會(huì)講到)
5.提示2:
● Pattern 對(duì)象表示一個(gè)已編譯的正則表達(dá)式。Pattern 類(lèi)沒(méi)有提供公共的構(gòu)造方法。 必須調(diào)用公共的靜態(tài) compile 方法,它將返回一個(gè) Pattern 對(duì)象。
● Matcher 是一個(gè)靠著輸入的字符串來(lái)解析這個(gè)模式和完成匹配操作的對(duì)象。 Matcher 也沒(méi)有定義公共的構(gòu)造方法,需要通過(guò)調(diào)用 Pattern 對(duì)象的 matcher 方法來(lái)獲得一個(gè) Matcher 對(duì)象。
● PatternSyntaxException 對(duì)象是一個(gè)未檢查異常,指示了正則表達(dá)式中的一個(gè)語(yǔ)法錯(cuò)誤。
正則表達(dá)式通配符
學(xué)習(xí)過(guò)程
一、匹配字符的通匹符
1.”.” —> 用于匹配一個(gè)任意的字符
比如: “t.n”,它匹配“tan”、“ten”、“tin”和“ton”,還匹配“t#n”、“tpn”甚至“t n”
Pattern p = Pattern.compile(“a.b.c.d”);
Matcher m = p.matcher(“axbac2d”);// 正則表達(dá)式 電話號(hào)號(hào)
boolean b = m.matches();// 判斷是否匹配 true
2.”[]” —>為了解決”.”匹配范圍過(guò)于廣泛這一問(wèn)題,你可以在方括號(hào)(“[]”)里面指定看來(lái)有意義的字符。此時(shí),只有方括號(hào)里面指定的字符才參與匹配。也就是說(shuō),正則表達(dá)式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因?yàn)樵诜嚼ㄌ?hào)之內(nèi)你只能匹配單個(gè)字符:
3.”|”—>如果除了上面匹配的所有單詞(tan”、“Ten”、“tin”和“ton”)之外,你還想要匹配“toon”,那么,你可以使用“|”操作符?!皘”操作符的基本意義就是“或”運(yùn)算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正則表達(dá)式。這里不能使用方擴(kuò)號(hào),因?yàn)榉嚼ㄌ?hào)只允許匹配單個(gè)字符;這里必須使用圓括號(hào)“()”, 它的作用與算術(shù)表達(dá)式中的作用是一樣的,表示一個(gè)整體。
4.“-”表示數(shù)字或字母的范圍,
[0-9]表示0到9中的其中一個(gè)字符,[3-8]表示3到8中的一個(gè)字符
[a-z]表示a到z中的其中一個(gè)字符,[b-m]表示b到m中的一個(gè)字符
[A-Z]表示A到Z中的其中一個(gè)字符
[b-d3-8]表示b到z或3到8中其中一個(gè)字符
[a-dx-z]表示a到d或x到z中其中一個(gè)字符
示例:
[a-c][0-9]{3}可以匹配a234,b112,c223等.
5.”^” —> 即非,用來(lái)確定緊靠該符號(hào)右邊的符號(hào)不能出現(xiàn)
5.1 [^0-9]表示不可以為0到9中的一個(gè)字符
5.2 [^A]表示不可以為A的字符
5.3 [^a-c]表示不可以為a到c的字符
6.快捷符號(hào)
7.”\”表示轉(zhuǎn)義
如果正則表達(dá)式中要使用的字符與通配符沖突,則在前加上”\”表示不是通配符使用
比如”[0-9]{3}\*{2}[0-9]{2}a*” 中不是次數(shù),而是字符。它可以匹配0到9的三個(gè)數(shù)字開(kāi)頭,后面是兩個(gè)*,再后是0到9的2個(gè)數(shù)字最后是0到多個(gè)a字符。
這個(gè)”234**23a”可以匹配上面的正則表達(dá)式。
8.”"表示結(jié)束,每個(gè)正則表達(dá)式后面都可以加上"表示結(jié)束,每個(gè)正則表達(dá)式后面都可以加上,實(shí)質(zhì)上加與不加作用相同
9.特殊的匹配
[\u4e00-\u9fa5]匹配漢字
示例”[\u4e00-\u9fa5]{3}”, 可以匹配三個(gè)漢字組成的字符串
二、匹配次數(shù)的通匹符
這些符號(hào)用來(lái)確定緊靠該符號(hào)左邊的符號(hào)出現(xiàn)的次數(shù):
示例1:a*Hello可以匹配以Hello結(jié)尾,以0到多個(gè)a開(kāi)頭的字符串,如Hello,aHello,aaHello,aaaHello
示例2:MyA*Hello可以匹配以My開(kāi)頭,以Hello結(jié)尾,中間可以有0到多個(gè)A,如MyAAAHello
示例3:HelloE+World可以匹配以Hello開(kāi)頭,以World結(jié)尾,中間可以有1到多個(gè)E,如HelloEEWorld
示例4:HelloE?World可以匹配以Hello開(kāi)頭,以World結(jié)尾,中間必須有0到1個(gè)E
示例5:HelloE{3}World可以匹配以Hello開(kāi)頭,以World結(jié)尾,中間必須有3個(gè)E
示例6:HelloE{2,4}World可以匹配以Hello開(kāi)頭,以World結(jié)尾,中間必須有2到4個(gè)E
示例7:Hello[^abc]可以匹配以Hello開(kāi)頭,不能以a或b或c結(jié)尾
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android應(yīng)用程序簽名步驟及相關(guān)知識(shí)介紹
本文主要介紹Android應(yīng)用程序簽名相關(guān)的理論知識(shí),包括:什么是簽名、為什么要給應(yīng)用程序簽名、如何給應(yīng)用程序簽名等,感興趣的朋友可以參考下哈2013-04-04利用Android實(shí)現(xiàn)比較炫酷的自定義View
自定義View、多線程、網(wǎng)絡(luò),被認(rèn)為是Android開(kāi)發(fā)者必須牢固掌握的最基礎(chǔ)的三大基本功,這篇文章主要給大家介紹了關(guān)于如何利用Android實(shí)現(xiàn)比較炫酷的自定義View的相關(guān)資料,需要的朋友可以參考下2021-07-07Android 連接Wifi和創(chuàng)建Wifi熱點(diǎn)的實(shí)例
本篇文章介紹了Android 連接Wifi和創(chuàng)建Wifi熱點(diǎn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。2016-10-10Android中Glide獲取圖片Path、Bitmap用法詳解
這篇文章主要介紹了Android中Glide獲取圖片Path、Bitmap用法以及代碼分析,需要的朋友們參考一下吧。2017-12-12Android編程實(shí)現(xiàn)的短信編輯器功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)的短信編輯器功能,涉及Android權(quán)限控制、界面布局及短信功能相關(guān)操作技巧,需要的朋友可以參考下2017-08-08在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解
這篇文章主要介紹了在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Android Activity Results API代替onActivityResul
說(shuō)到onActivityResult,我們已經(jīng)非常熟悉來(lái),通過(guò)在A activity啟動(dòng)B activity并且傳入數(shù)據(jù)到B中,然后在A中通過(guò)onActivityResult來(lái)接收B中返回的數(shù)據(jù)。在最新的activity-ktx的beta版本中,谷歌已經(jīng)廢棄了onActivityResult2022-09-09去除arraylist容器中的相同的對(duì)象元素的方法
下面小編就為大家?guī)?lái)一篇去除arraylist容器中的相同的對(duì)象元素的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09Android標(biāo)題欄最右邊添加按鈕的實(shí)例
這篇文章主要介紹了Android標(biāo)題欄最右邊添加按鈕的實(shí)例的相關(guān)資料,希望通過(guò)本文大家能掌握如何操作,需要的朋友可以參考下2017-09-09