android验证邮箱输入是否合法
本文实例为大家分享了android验证邮箱输入是否合法的具体代码,供大家参考,具体内容如下
下面是验证手机号和邮箱是否合法的方法,直接将这两个静态方法考入自己的项目中就可以用啦
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("手机号合法"); } else { tv.settext("手机号不合法"); } break; } } // /** // * 验证手机格式 // */ public static boolean ismobile(string number) { /* 移动:134、135、136、137、138、139、150、151、157(td)、158、159、187、188 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通) 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9 */ //"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 string num = "[1][358]\\d{9}"; if (textutils.isempty(number)) { return false; } else { //matches():字符串是否在给定的正则表达式匹配 return number.matches(num); } } //邮箱验证 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); } } }
了解正则表达式
学习过程
1.概念:“正则表达式”(regular expression)就是一个特殊的字符串,用来匹配字符串与查找字符串
2.java基础架包中:
java.util.regex 包主要由三个类所组成:pattern、matcher 和 patternsyntaxexception。
3.正则表达式的作用:
1).判断字符串的正确性
2).查找字符串
3).在其他类特别是string中的使用
// 1.判断字符串的正确性 // 判断电话号码是否是以136开头的11个数字的电话号码 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);// 正则表达式 电话号号 boolean b = m.matches();// 判断是否匹配 system.out.println(b);// true }
// 2.查找字符串中是否有两个数字组成的子字符串 private void m3() { pattern p = pattern.compile("\\d{2}"); matcher m = p.matcher("a29abbccsdf"); boolean b = m.find(); system.out.println(b);// true }
// 3.在其它类特别是string中的使用 // 通过运算符把字符串拆开 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开头by结尾,并且中间有仅只有一个字符 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:正则表达式还可以在字符串中查找匹配的子字符串; 在其它类中的使用…..。(后面章节会讲到)
5.提示2:
● pattern 对象表示一个已编译的正则表达式。pattern 类没有提供公共的构造方法。 必须调用公共的静态 compile 方法,它将返回一个 pattern 对象。
● matcher 是一个靠着输入的字符串来解析这个模式和完成匹配操作的对象。 matcher 也没有定义公共的构造方法,需要通过调用 pattern 对象的 matcher 方法来获得一个 matcher 对象。
● patternsyntaxexception 对象是一个未检查异常,指示了正则表达式中的一个语法错误。
正则表达式通配符
学习过程
一、匹配字符的通匹符
1.”.” —> 用于匹配一个任意的字符
比如: “t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”
pattern p = pattern.compile(“a.b.c.d”);
matcher m = p.matcher(“axbac2d”);// 正则表达式 电话号号
boolean b = m.matches();// 判断是否匹配 true
2.”[]” —>为了解决”.”匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“ten”、“tin”和“ton”。但“toon”不匹配,因为在方括号之内你只能匹配单个字符:
3.”|”—>如果除了上面匹配的所有单词(tan”、“ten”、“tin”和“ton”)之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”, 它的作用与算术表达式中的作用是一样的,表示一个整体。
4.“-”表示数字或字母的范围,
[0-9]表示0到9中的其中一个字符,[3-8]表示3到8中的一个字符
[a-z]表示a到z中的其中一个字符,[b-m]表示b到m中的一个字符
[a-z]表示a到z中的其中一个字符
[b-d3-8]表示b到z或3到8中其中一个字符
[a-dx-z]表示a到d或x到z中其中一个字符
示例:
[a-c][0-9]{3}可以匹配a234,b112,c223等.
5.”^” —> 即非,用来确定紧靠该符号右边的符号不能出现
5.1 [^0-9]表示不可以为0到9中的一个字符
5.2 [^a]表示不可以为a的字符
5.3 [^a-c]表示不可以为a到c的字符
6.快捷符号
7.”\”表示转义
如果正则表达式中要使用的字符与通配符冲突,则在前加上”\”表示不是通配符使用
比如”[0-9]{3}\*{2}[0-9]{2}a*” 中不是次数,而是字符。它可以匹配0到9的三个数字开头,后面是两个*,再后是0到9的2个数字最后是0到多个a字符。
这个”234**23a”可以匹配上面的正则表达式。
8.”"表示结束,每个正则表达式后面都可以加上"表示结束,每个正则表达式后面都可以加上,实质上加与不加作用相同
9.特殊的匹配
[\u4e00-\u9fa5]匹配汉字
示例”[\u4e00-\u9fa5]{3}”, 可以匹配三个汉字组成的字符串
二、匹配次数的通匹符
这些符号用来确定紧靠该符号左边的符号出现的次数:
示例1:a*hello可以匹配以hello结尾,以0到多个a开头的字符串,如hello,ahello,aahello,aaahello
示例2:mya*hello可以匹配以my开头,以hello结尾,中间可以有0到多个a,如myaaahello
示例3:helloe+world可以匹配以hello开头,以world结尾,中间可以有1到多个e,如helloeeworld
示例4:helloe?world可以匹配以hello开头,以world结尾,中间必须有0到1个e
示例5:helloe{3}world可以匹配以hello开头,以world结尾,中间必须有3个e
示例6:helloe{2,4}world可以匹配以hello开头,以world结尾,中间必须有2到4个e
示例7:hello[^abc]可以匹配以hello开头,不能以a或b或c结尾
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: java 归并排序的实例详解