布局:
<?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