如果判断一个手机号码是否是手机号码呢?如何判断邮箱的格式是否正确呢?这个时候我们可以使用正则表达式来判断,关于正则表达式的语法详见:
http://baike.baidu.com/link?url=slMgbxDanfC6wBLXN4iuOiptalJnHKuLW0KCgZB_XWvCL1ZaH6NKTDusrZ9vPkvhz9WeUCMRbWKryFrBMh5oga
正则表达式主要使用到Pattern与Matcher类:
Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。
Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
这里写了个测试判断手机号码、验证码、邮箱、帐号和密码的例子:
/** * 主界面 * * @author yuzhentao */ public class MainActivity extends Activity implements View.OnClickListener{
private Context context; private EditText et01, et02, et03, et04, et05; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); }
@Override public void onClick(View v) {
int viewId = v.getId(); switch (viewId) {
case R.id.button_01_activity_main:
if (!isPhoneRegex(et01.getText().toString())) {
Toast.makeText(context, "手机号码格式错误", Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(context, "手机号码格式正确", Toast.LENGTH_SHORT).show(); }
break; case R.id.button_02_activity_main:
if (!isCaptchaRegex(et02.getText().toString())) {
Toast.makeText(context, "验证码格式错误", Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(context, "验证码格式正确", Toast.LENGTH_SHORT).show(); }
break; case R.id.button_03_activity_main:
if (!isEmailRegex(et03.getText().toString())) {
Toast.makeText(context, "邮箱格式错误", Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(context, "邮箱格式正确", Toast.LENGTH_SHORT).show(); }
break; case R.id.button_04_activity_main:
if (!isAccountRegex(et04.getText().toString())) {
Toast.makeText(context, "帐号格式错误", Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(context, "帐号格式正确", Toast.LENGTH_SHORT).show(); }
break; case R.id.button_05_activity_main:
if (!isPasswordRegex(et05.getText().toString())) {
Toast.makeText(context, "密码格式错误", Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(context, "密码格式正确", Toast.LENGTH_SHORT).show(); }
break; }
}
private void initView() {
context = this; et01 = (EditText) findViewById(R.id.edittext_01_activity_main); et02 = (EditText) findViewById(R.id.edittext_02_activity_main); et03 = (EditText) findViewById(R.id.edittext_03_activity_main); et04 = (EditText) findViewById(R.id.edittext_04_activity_main); et05 = (EditText) findViewById(R.id.edittext_05_activity_main); findViewById(R.id.button_01_activity_main).setOnClickListener(this); findViewById(R.id.button_02_activity_main).setOnClickListener(this); findViewById(R.id.button_03_activity_main).setOnClickListener(this); findViewById(R.id.button_04_activity_main).setOnClickListener(this); findViewById(R.id.button_05_activity_main).setOnClickListener(this); }
/** * 判断是否是合法手机号码(手机号码段详见:http://baike.baidu.com/view/781667.htm#2) * * @param phone:手机号码 * @return boolean */ private boolean isPhoneRegex(String phone) {
String phonePattern = "^(((13\\d{1})|(14[57])|(15([0-3]|[5-9]))|(17[6-8])|(18\\d{1}))\\d{8}|170[0,5,9]\\d{7})$"; // Pattern p = Pattern.compile(phonePattern); // Matcher m = p.matcher(phone); // return m.matches(); // 或者 return Pattern.matches(phonePattern, phone); }
/** * 判断是否是合法验证码(6位数字) * * @param captcha:验证码 * @return boolean */ private boolean isCaptchaRegex(String captcha) {
String captchaPattern = "^\\d{6}$"; return Pattern.matches(captchaPattern, captcha); }
/** * 判断是否是合法邮箱 * * @param email:邮箱 * @return boolean */ private boolean isEmailRegex(String email) {
String emailPattern = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; return Pattern.matches(emailPattern, email); }
/** * 判断是否是合法帐号(允许6~18字节,允许字母数字下划线) * * @param account:帐号 * @return boolean */ private boolean isAccountRegex(String account) {
String accountPattern = "^\\w{6,18}$"; return Pattern.matches(accountPattern, account); }
/** * 判断是否是合法密码(以字母开头,允许6~18字节,允许字母数字下划线) * * @param password:密码 * @return boolean */ private boolean isPasswordRegex(String password) {
String passwordPattern = "^[a-zA-Z]\\w{5,17}$"; return Pattern.matches(passwordPattern, password); }
}
具体判断代码里已经写得很清楚了,当然也可以把这些判断写到一个工具类当中,大家随意。
这里说一下单独使用Pattern和Matcher时怎么用,如下:
Pattern p = Pattern.compile(phonePattern);
Matcher m = p.matcher(phone);
return m.matches();
希望对大家有所帮助。
效果图:
Demo地址:http://download.csdn.net/detail/qq_23940659/9475245