正则表达式之JSP、Android

  对于正则表达式,很多朋友一定不陌生,因为在我们做网站或apk时,当需要用户提交表单时,很多时间需要判断用户的输入是否合法,这个时间正则表达式就可以发挥它的作用了,我们知道正则表达式在这个方面是很强大的,本篇我将为大家介绍一下,正则表达式在Android和JSP中的使用方法。

  对于正则表达式的基础介绍请参考:http://www.cnblogs.com/AndroidJotting/p/RegExp.html

  首先为大家介绍一下正则表达式在JSP中的使用规范(JSP代码):

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>正则表达式</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" language="javascript">
        function judge(form){
            var cn = form.cn;
            var cn_text = /^[\u0391-\uFFE5]+$/;//中文匹配
            //var cn_text = /^\w*$/;//中文匹配
            var en = form.en;
            var en_text = /^[A-Za-z]+$/;//字母匹配
            var num = form.num;
            var num_text = /^[0-9]+$/;//数字匹配
            var emal = form.emal;
            var emal_text = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;//emal匹配
            var phone = form.phone;
            var phone_text = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;//7位电话号码
            var url = form.url;
            var url_text = /^http:\/\/w{3}\.[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$/;//网址匹配
            var qq = form.qq;
            var qq_text = /^[1-9]\d{4,11}$/;//匹配QQ号
            var fuhao = form.fuhao;
            var fuhao_text = /^[^%&’,;=?$x22]+$/;//匹配特殊符号
            if(!cn_text.test(cn.value)){
                alert("请输入中文。");
                cn.select();
                cn.focus();
                return false;
            }else{
                if(!en_text.test(en.value)){
                    alert("请输入英文字符。");
                    en.select();
                    en.focus();
                    return false;
                }else{
                    if(!num_text.test(num.value)){
                        alert("请输入数字。");
                        num.select();
                        num.focus();
                        return false;
                    }else{
                        if(!emal_text.test(emal.value)){
                            alert("邮箱格式不对。");
                            emal.select();
                            emal.focus();
                            return false;
                        }else{
                            if(!phone_text.test(phone.value)){
                                alert("电话格式不对.");
                                phone.select();
                                phone.focus();
                                return false;
                            }else{
                                if(!url_text.test(url.value)){
                                    alert("网址输入的格式不正确。");
                                    url.value="http://www.";
                                    url.focus();
                                    return false;
                                }else{
                                    if(!qq_text.test(qq.value)){
                                        alert("QQ输入的格式不正确。");
                                        qq.select();
                                        qq.focus();
                                        return false;
                                    }else{
                                        if(!fuhao_text.test(fuhao.value)){
                                            alert("请输入特殊符号。");
                                            fuhao.select();
                                            fuhao.focus();
                                            return false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    </script>
  </head>

  <body><center>
    <form action="#" method="post" id="form" name="form" onsubmit="return judge(this)">
        中文:<input type="text" name="cn"><br/>
        英文:<input type="text" name="en"><br/>
        数字:<input type="text" name="num"><br/>
        邮箱:<input type="text" name="emal"><br/>
        电话:<input type="text" name="phone"><br/>
        网址:<input type="text" name="url"><br/>
        QQ: &nbsp;<input type="text" name="qq"><br/>
        符号:<input type="text" name="fuhao"><br/>
        <input type="submit" value="提交">
    </form>
  </center></body>
</html>

  代码没有什么难点,就不再赘述了,大家可以可以复制、粘贴测试一下,这样可以更好的理解。

  下面我们来一起探讨一下正则表达式在Android中的使用:

  1、验证用户名为例,用户名一般字母开头,允许字母数字下划线,5-16个字节:

String regEx = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(userName);
boolean b = matcher.matches();

  匹配的话b为true,否则为false

  2、电话、邮箱、数字判断:

 //判断手机格式是否正确
public boolean isMobileNO(String mobiles) {
Pattern p = Pattern
.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
Matcher m = p.matcher(mobiles);

return m.matches();
}
//判断email格式是否正确
public boolean isEmail(String email) {
String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);

return m.matches();
}
//判断是否全是数字
public boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
}

  最后在为大家简单介绍一些有关JAVA的正则表达式:

  a.java验证IP地址:

Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher matcher = pattern.matcher("127.400.600.2"); //以验证127.400.600.2为例
System.out.println(matcher.matches());

  b.java验证日期时间,解决润月:

Pattern pattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
Matcher matcher = pattern.matcher("2000-02-29 23:59:59");
System.out.println(matcher.matches());

  c.java验证邮箱格式:

Pattern pattern = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
Matcher matcher = pattern.matcher("[email protected]");
System.out.println(matcher.matches());

  附带为大家介绍一下我国电话号码段的知识:

  根据实际开发于2009年9月7日最新统计:
   中国电信发布中国3G号码段:中国联通185,186;中国移动188,187;中国电信189,180共6个号段。
   3G业务专属的180-189号段已基本分配给各运营商使用, 其中180、189分配给中国电信,187、188归中国移动使用,185、186属于新联通。
   中国移动拥有号码段:139、138、137、136、135、134、159、158、157(3G)、152、151、150、188(3G)、187(3G);14个号段
   中国联通拥有号码段:130、131、132、155、156(3G)、186(3G)、185(3G);6个号段
   中国电信拥有号码段:133、153、189(3G)、180(3G);4个号码段
   移动:
       2G号段(GSM网络)有139,138,137,136,135,134(0-8),159,158,152,151,150
       3G号段(TD-SCDMA网络)有157,188,187
       147是移动TD上网卡专用号段.
   联通:
       2G号段(GSM网络)有130,131,132,155,156
       3G号段(WCDMA网络)有186,185
   电信:
       2G号段(CDMA网络)有133,153
       3G号段(CDMA网络)有189,180

时间: 2024-08-05 00:06:13

正则表达式之JSP、Android的相关文章

Android Activity intent-flilter过滤机制

在Android中一个应用(APP1)如果要想调用另一应用的(APP2)的某一个Activity(Activity2),就需要在给Intent设置的参数能够通过Activiy2 在清单文件中声明的<intent-filter>属性验证,才能成功调用到Activity.<intent-filter> 标签中可以使用的验证有:Action验证.Category验证.Data验证,其中Action验证是必须声明的. Action 验证: 一个Activity可以声明多个Action,在验

【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.android和php在当下如此热门,我想作为一个android程序员还是应该清楚android与php的交互的,那么,今天我们就来尝试一波~ 二.环境准备 1)虽然现在十分流行wamp(windows+apache+mysql+php)和lamp的php开发模式,但是为了省时省力,今天我们就暂且使用xampp

手机上使用asmack开发xmpp客户端

openfire服务端,smack:     下载地址:http://www.igniterealtime.org/downloads/index.jsp     源代码:http://www.igniterealtime.org/downloads/source.jspandroid客户端库,asmack:    首页:https://github.com/Flowdalic/asmack    源代码及jar包:http://asmack.freakempire.de/服务端搭建指导:htt

请求网络,Handler信息传递,流转字符串

Handler消息传递 HttpURLConnection请求访问网络 根据流返回一个字符串信息 访问网络的权限:<uses-permission android:name="android.permission.INTERNET"/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

SQL必知必会 第4版 pdf

下载地址:网盘下载 内容简介  · · · · · · SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle.SQL Server.MySQL.DB2.PostgreSQL.SQLite等各种主流数据库提供了大量简明的实例.与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极

Java复习第一章

Java第一章 java分类:数据库设计相关(JDBC) Web设计(JSP) Android 数据交换技术(XML) Jave EE 我们学的叫JAVA S java的特点:简单:面向对象:平台无关:多线程:动态(jdk jvm jre关系) 系统环境的设置(JAVA_HOME) class HelloWorld{ public static void main(String[] args) { System.out.println("HelloWorld"); } } 第一步:ja

不用动手术的肝脏清洗法

几乎每个人体内都有肝胆结石,或许很多人只知道胆结石,不知道肝脏内也有结石,也不知道其实很多胆结石的初期就是在肝脏内形成的,更不知道吃夜宵.晚饭在7点之后吃.吃油炸食品.甚至喝水较少也会导致肝胆结石.就以上几个不良生活习惯,我们每个人占多少?简单的讲,肝脏是人体内最大的器官,它是人体的解毒工厂,它的构造极其复杂,所以至今为止,人类无法设计出人造肝脏,它的复杂度仅次于脑组织.所以让肝脏维持正常功能直接关系着人体的健康.肝脏可以使激素,酒精以及某些有害药物在体内失效.各种人体无法代谢的毒素都会由肝脏负

导演与明星老婆离婚 恋亲手捧红干女儿

http://www.ehotelier.cn/Thread.jsp?tid=182934http://www.ehotelier.cn/Thread.jsp?tid=182940http://www.ehotelier.cn/Thread.jsp?tid=182946http://www.ehotelier.cn/Thread.jsp?tid=182951http://www.ehotelier.cn/Thread.jsp?tid=182957http://www.ehotelier.cn/T

Android正则表达式验证邮箱地址

1 // 邮箱有效性验证 2 Pattern pattern = Pattern 3 .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 4 Matcher mc = 5 pattern.matcher(RegistMail.getText().toString().trim()); 其中RegistMail为一个EditText控件,用来处理用户的邮箱输入. Android正则表达式验证邮箱地址,布布扣,bu