Android版:验证手机号码的正则表达式

来源:互联网 发布:c语言汉化版 编辑:程序博客网 时间:2024/05/29 12:30

例子一:

[java] view plaincopy
  1. /** 
  2.  * 验证手机格式 
  3.  */  
  4. public static boolean isMobileNO(String mobiles) {  
  5.     /* 
  6.     移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 
  7.     联通:130、131、132、152、155、156、185、186 
  8.     电信:133、153、180、189、(1349卫通) 
  9.     总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9 
  10.     */  
  11.     String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。  
  12.     if (TextUtils.isEmpty(mobiles)) return false;  
  13.     else return mobiles.matches(telRegex);  
  14.    } 


例子二:

匹配ISBN 号(10位或13位数字)


做个笔记:

if (checkString(editText.getText().toString())) {     Toast.makeText(testRegularExpression.this, "匹配成功", Toast.LENGTH_LONG).show();    }else    Toast.makeText(testRegularExpression.this, "匹配不成功", Toast.LENGTH_LONG).show(); private boolean checkString(String s) {  return s.matches("^(\\d{10}|\\d{13})$"); }

 

顺手记一下常用的正则表达式匹配:

 

^[1-9]\d{3}$   匹配非0开头的4位整数

^([1-9]\d{0,3})$  非零的最大4位数字,可以是1位,2位,3位

 

 // 只允许字母和数字      

// String   regEx  =  "[^a-zA-Z0-9]";                    // 清除掉所有特殊字符 String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……& amp;*()——+|{}【】‘;:”“’。,、?]"; Pattern   p   =   Pattern.compile(regEx);    Matcher   m   =   p.matcher(str);    return   m.replaceAll("").trim();    }  

 

1.比如,在字符串包含验证时

//查找以Java开头,任意结尾的字符串Pattern pattern = Pattern.compile("^Java.*");Matcher matcher = pattern.matcher("Java不是人");boolean b= matcher.matches();//当条件满足时,将返回true,否则返回falseSystem.out.println(b);

2.以多条件分割字符串时

Pattern pattern = Pattern.compile("[, |]+");String[] strs = pattern.split("Java Hello World Java,Hello,,World|SUN");for (int i=0;i<strs.length;i++) {System.out.println(strs[i]);}

3.文字替换(首次出现字符)

Pattern pattern = Pattern.compile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");//替换第一个符合正则的数据System.out.println(matcher.replaceFirst("Java"));

4.文字替换(全部)

Pattern pattern = Pattern.compile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");//替换第一个符合正则的数据System.out.println(matcher.replaceAll("Java"));

5.文字替换(置换字符)

Pattern pattern = Pattern.compile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World ");StringBuffer sbr = new StringBuffer();while (matcher.find()) {matcher.appendReplacement(sbr, "Java");}matcher.appendTail(sbr);System.out.println(sbr.toString());

6.验证是否为邮箱地址

String str="ceponline@yahoo.com.cn";Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);System.out.println(matcher.matches());

7.去除html标记

Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");String string = matcher.replaceAll("");System.out.println(string);

8.查找html中对应条件字符串:

Pattern pattern = Pattern.compile("href=\"(.+?)\"");Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");if(matcher.find())System.out.println(matcher.group(1));}

9.截取http://地址:

//截取urlPattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");StringBuffer buffer = new StringBuffer();while(matcher.find()){             buffer.append(matcher.group());       buffer.append("\r\n");             System.out.println(buffer.toString());}


10.替换指定{}中文字:

String str = "Java目前的发展史是由{0}年-{1}年";String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};System.out.println(replace(str,object));public static String replace(final String sourceString,Object[] object) {String temp=sourceString;   for(int i=0;i<object.length;i++){String[] result=(String[])object[i];Pattern    pattern = Pattern.compile(result[0]);Matcher matcher = pattern.matcher(temp);temp=matcher.replaceAll(result[1]);}return temp;}

11.以正则条件查询指定目录下文件:

//用于缓存文件列表private ArrayList files = new ArrayList();//用于承载文件路径private String _path;//用于承载未合并的正则公式private String _regexp;class MyFileFilter implements FileFilter {public boolean accept(File file) {try {Pattern pattern = Pattern.compile(_regexp);Matcher match = pattern.matcher(file.getName());               return match.matches();} catch (Exception e) {return true;}}}FilesAnalyze (String path,String regexp){getFileName(path,regexp);}private void getFileName(String path,String regexp) {//目录_path=path;_regexp=regexp;File directory = new File(_path);File[] filesFile = directory.listFiles(new MyFileFilter());if (filesFile == null) return;for (int j = 0; j < filesFile.length; j++) {files.add(filesFile[j]);}return;}public void print (PrintStream out) {Iterator elements = files.iterator();while (elements.hasNext()) {File file=(File) elements.next();out.println(file.getPath());   }}public static void output(String path,String regexp) {FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);fileGroup1.print(System.out);}public static void main (String[] args) {output("C:\\","[A-z|.]*");  String s_Result="Distance: 2.8km (about 9 mins)"; 从上面取出2.8km 与9 min//Distance parsingPattern p = Pattern.compile("Distance: (\\d+(\\.\\d+)?)(.*?)\\b");Matcher m = p.matcher(s_Result);if(m.find()){MatchResult mr=m.toMatchResult();f_Distance=mr.group(1);//2.8m_DistanceUnit=mr.group(3);//km}//Time parsingp = Pattern.compile("about (\\d+(\\.\\d+)?) (.*)\\b");m = p.matcher(s_Result);if(m.find()){MatchResult mr=m.toMatchResult();f_timeEst=mr.group(1);//9m_timeEstUnit=mr.group(3);//min}

或者

String s_Result="Distance: 2.8km (about 9 mins)";Pattern p = Pattern.compile("(\\d+(\\.\\d+)?) ?(\\w+?)\\b");Matcher m = p.matcher(s_Result);while(m.find()){MatchResult mr=m.toMatchResult();String value=mr.group(1);//2.8 and 9 come hereString units=mr.group(3);//km and mins come here}


参考文章:http://www.cnblogs.com/doll-net/archive/2006/10/31/545398.html



0 0
原创粉丝点击