Android中正则表达式的常用判断

来源:互联网 发布:海康威视ddns设备域名 编辑:程序博客网 时间:2024/05/03 22:11

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <LinearLayout
        android:id="@+id/linearLayout153"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/naaaa"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <EditText
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
         </EditText>


    </LinearLayout>


    <LinearLayout
        android:id="@+id/linearLayout24"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/ssss"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年龄"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <EditText
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
          />


    </LinearLayout>


    <LinearLayout
        android:id="@+id/linearLayout231"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/textVeiew21"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="邮箱"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <EditText
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
             />


    </LinearLayout>
      
    <LinearLayout
        android:id="@+id/linearLayout213"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/textViewdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电话"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <EditText
            android:id="@+id/tel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            />


    </LinearLayout>
      
    <LinearLayout
        android:id="@+id/linearLayout23"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <TextView
            android:id="@+id/textVidddewddw"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="生日"
            android:textAppearance="?android:attr/textAppearanceLarge" />


        <EditText
            android:id="@+id/birthday"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            />


    </LinearLayout>
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="增加" />
        
</LinearLayout>


//java代码:

package com.unet;



import java.util.regex.Matcher;
import java.util.regex.Pattern;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/*
 * 
1。^\d+$  //匹配非负整数(正整数 + 0) 
2。^[0-9]*[1-9][0-9]*$  //匹配正整数 
3。^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0) 
4。^-[0-9]*[1-9][0-9]*$  //匹配负整数 
5。^-?\d+$    //匹配整数 
6。^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0) 
7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数 
8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0) 
9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数 
10。^(-?\d+)(\.\d+)?$  //匹配浮点数 
11。^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 
12。^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 
13。^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 
14。^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 
15。^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串 
16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址 
17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url 
18。匹配中文字符的正则表达式: [\u4e00-\u9fa5] 
19。匹配双字节字符(包括汉字在内):[^\x00-\xff]
20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 
21。匹配空行的正则表达式:\n[\s| ]*\r 
22。匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
23。匹配首尾空格的正则表达式:(^\s*)|(\s*$)


* 正则表达式用例
  * 1、^\S+[a-z A-Z]$ 不能为空 不能有空格  只能是英文字母
  * 2、\S{6,}         不能为空 六位以上
  * 3、^\d+$          不能有空格 不能非数字
  * 4、(.*)(\.jpg|\.bmp)$ 只能是jpg和bmp格式
  * 5、^\d{4}\-\d{1,2}-\d{1,2}$ 只能是2004-10-22格式
  * 6、^0$            至少选一项
  * 7、^0{2,}$        至少选两项
  * 8、^[\s|\S]{20,}$ 不能为空 二十字以上
  * 9、^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$邮件
  * 10、\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* 输入多个地址用逗号或空格分隔邮件
  * 11、^(\([0-9]+\))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628
  * 12、^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(\.[a-z A-Z 0-9 _]+)+(\,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(\.[a-z A-Z 0-9 _]+)+)*$
  *     只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
  * 13 ^\w+@\w+(\.\w+)+(\,\w+@\w+(\.\w+)+)*$上面表达式也可以写成这样子,更精练。
    14   ^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$
 * */
public class ZhengzeActivity extends Activity implements OnClickListener {
    


EditText tvName=null; 
EditText tvAge=  null;
EditText tvEmail=null;
EditText tvTel=  null;
EditText tvBirthday=  null;
Button   btnOk=null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
          tvName=(EditText)this.findViewById(R.id.name);
          tvAge=(EditText)this.findViewById(R.id.age);
          tvEmail=(EditText)this.findViewById(R.id.email);
          tvTel=(EditText)this.findViewById(R.id.tel);
          tvBirthday=(EditText)this.findViewById(R.id.birthday);
         
          btnOk=(Button)this.findViewById(R.id.ok);
          btnOk.setOnClickListener(this);
      
    }


@Override
public void onClick(View v) {
            String strInput = tvTel.getText().toString();  
            System.out.println("进入验证处理。。。");
            
            if (isPhoneNumberValid(strInput)==true&& checkEmail(tvEmail.getText().toString())==true
            && checkBirthday(tvBirthday.getText().toString())==true&& checkInt(tvAge.getText().toString())==true)
            {
                Toast.makeText(ZhengzeActivity.this, "正确了",Toast.LENGTH_LONG).show(); 
            }
     }   
       /*检查字符串是否为电话号码的方法,并返回true or false的判断值*/  
 public   boolean isPhoneNumberValid(String phoneNumber)  
 {  
   boolean isValid = false;  
   /* 可接受的电话格式有: 
    * ^\\(? : 可以使用 "(" 作为开头 
    * (\\d{3}): 紧接着三个数字 
    * \\)? : 可以使用")"接续 
    * [- ]? : 在上述格式后可以使用具选择性的 "-". 
    * (\\d{4}) : 再紧接着三个数字 
    * [- ]? : 可以使用具选择性的 "-" 接续. 
    * (\\d{4})$: 以四个数字结束. 
    * 可以比较下列数字格式: 
    * (123)456-78900, 123-4560-7890, 12345678900, (123)-4560-7890     quot;
   */  
   String expression = "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5}){1}";  
   String expression2 ="^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4}){1}";  
   CharSequence inputStr = phoneNumber;  
   /*创建Pattern*/  
   Pattern pattern = Pattern.compile(expression);  
   /*将Pattern 以参数传入Matcher作Regular expression*/  
   Matcher matcher = pattern.matcher(inputStr);  
   /*创建Pattern2*/  
   Pattern pattern2 =Pattern.compile(expression2);  
   /*将Pattern2 以参数传入Matcher2作Regular expression*/  
   Matcher matcher2= pattern2.matcher(inputStr);  
   
   if(matcher.matches()||matcher2.matches())    // tvTel.setText("");    Toast.makeText(ZhengzeActivity.this, "输入的电话格式不符",Toast.LENGTH_LONG).show();  
   {  
     isValid = true;  
     
   }  else {
       Toast.makeText(this, "输入的电话格式不符",Toast.LENGTH_LONG).show();  
   }
   return isValid;   
 }  

 //验证邮件是否正确
 public boolean checkEmail(String strEmail){
      String strPattern = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";   
   Pattern p = Pattern.compile(strPattern);   
   Matcher m = p.matcher(strEmail);  
   boolean isValid = m.matches();
   if(!isValid){
      tvEmail.setText("");  
           Toast.makeText(ZhengzeActivity.this, "输入的email不符",Toast.LENGTH_LONG).show();  
   }
   return isValid;  
 }
 //出身日期是否正确
 public boolean checkBirthday(String strBirthday){


      String strPattern = "^\\d{4}\\-\\d{1,2}-\\d{1,2}$";   //2012-10-11
   Pattern p = Pattern.compile(strPattern);   
   Matcher m = p.matcher(strBirthday);  
   boolean isValid = m.matches();
   if(!isValid){
      //tvBirthday.setText("");  
        Toast.makeText(ZhengzeActivity.this, "生日日期不符,必须是2012-10-22格式",Toast.LENGTH_LONG).show();  
   }
   return isValid;  
 
 }

 //验证正整数
 public boolean checkInt(String strInt){


      String strPattern = "^[0-9]*[1-9][0-9]*$";   //2012-10-11
   Pattern p = Pattern.compile(strPattern);   
   Matcher m = p.matcher(strInt);  
   boolean isValid = m.matches();
   if(!isValid){
      tvAge.setText("");  
        Toast.makeText(ZhengzeActivity.this, "年龄必须为正整数",Toast.LENGTH_LONG).show();  
   }
   return isValid;  
 
 }

 
}//class

























0 0