java 正则表达式

package test; 

 public class zhengze { 

private static String 中文 = "^[\u0391-\uFFE5]+$"; 

private static String 英文 = "^[A-Za-z]+$";

private static String 数字 = "^\\d+$";

private static String 整数 = "^[-\\+]?\\d+$";

private static String 实数 = "^[-\\+]?\\d+(.\\d+)?$";

  private static String 邮件 = "^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+.[a-zA-Z]{2,5}?((.cn)|(.jp))?$";

  private static String 邮件2 = "^$";

  private static String 网址 = "^http:\\/\\/[A-Za-z0-9]+.[A-Za-z0-9]+[-\\/=?%&_~`@\\[\\]\':+!]*([^<>\"\"])*$";

  private static String 电话 = "^((\\(\\d{3}\\-\\))?(\\(0\\d{2,3}\\)|0\\d{2,3}-))?[1-9]\\d{6,7}$";

  private static String 手机 = "^((\\(\\d{3}\\))|(\\d{3}\\-))?((13)|(15))\\d{9}$";

  private static String 货币 = "^\\d+(\\.\\d+)?$"; 

private static String 邮编 = "^[1-9]\\d{5}$";

  private static String 身份证 = "^\\d{17}[x0-9]$";

  private static String QQ = "^[1-9]\\d{4,8}$";

  public static void main(String[] args) { 

System.out.println("张三验证中文为:"+"张三".matches(中文)); // System.out.println("zhang验证中文为:"+"zhang".matches(中文)); // //

System.out.println("张三验证中文为:"+"张三".matches(英文)); //

System.out.println("zhang验证中文为:"+"zhang".matches(英文)); // // System.out.println("13验证数字为:"+"13".matches(数字)); // System.out.println("aa验证数字为:"+"aa".matches(数字)); // // System.out.println("13验证整数为:"+"13".matches(整数)); //

System.out.println("-13验证整数为:"+"-13".matches(整数)); // System.out.println("+13验证整数为:"+"+13".matches(整数)); // System.out.println("+13验证实数为:"+"+13".matches(实数)); // System.out.println("+13.5验实数字为:"+"+13.5".matches(实数)); // System.out.println("huoleisi@163.com验证邮件为:"+"huoleisi@163.com".matches(邮件)); //

System.out.println("huoleisi@163.com.cn验证邮件为:"+"huoleisi@163.com.cn".matches(邮件)); //

System.out.println("huoleisi@163.com.jp验证邮件为:"+"huoleisi@163.com.jp".matches(邮件)); //

System.out.println("huoleicom验证邮件为:"+"huoleisicom".matches(邮件)); //

System.out.println("http://mail.163.com验证网址为:"+"http://mail.163.com".matches(网址)); //

System.out.println("http://www.cnjavadown.com/html/lizi-daima/java/javajichu/200809/20-2421.html验证网址为:"+"http://www.cnjavadown.com/html/lizi-daima/java/javajichu/200809/20-2421.html".matches(网址)); // System.out.println("httpa:s/s/mail.16sdf3.com验证网址为:"+"httpa:s/s/mail.16sdf3.com".matches(网址)); // System.out.println("010-85288991验证电话为:"+"010-85288991".matches(电话)); //

System.out.println("01011-85288991验证电话为:"+"01011-85288991".matches(电话)); //

System.out.println("010-13759944781验证手机为:"+"010-13759944781".matches(手机)); //

System.out.println("0.91验证货币为:"+"0.91".matches(货币)); // System.out.println("751300验证邮编为:"+"751300".matches(邮编)); // System.out.println("640324198608110017验证身份证为:"+"640324198608110017".matches(身份证)); //

System.out.println("253287403验证QQ为:"+"253287403".matches(QQ)); } } 

 

\D 等於 [^0-9] 非数字 
 \s 等於 [ \t\n\x0B\f ] 空白字元 
 \S 等於 [^ \t\n\x0B\f ] 非空白字元 
 \w 等於 [a-zA-Z_0-9] 数字或是英文字 
  \W 等於 [^a-zA-Z_0-9] 非数字与英文字 
  
  ^ 表示每行的开头
  $ 表示每行的结尾

.  匹配任意一个字符 $ 匹配一行的结尾 ^ 匹配一行的开头(在[]里面表示否定) 
{} 定义了一个范围  [] 定义了一个字符类 () 定义了一个组 
*前面出现0次以上   + 前面匹配一次以上 ?前面出现0次或一次   
\ 后面的字符不会看作metacharacter  \w 字母数字下划线 \W 非字母数字下划线 
\d 单个数字 \D单个非数字 | 或,二者之一 &&与操作符 \b单词边界 

 

 要点:^用在中括号开头的时候,就表示排除括号里的字符。为了PHP能够解释,你必须在这些字符面前后加'',并且将一些字符转义.

 不要忘记在中括号里面的字符是这条规路的例外?在中括号里面, 所有的特殊字符,包括(''), 都将失去他们的特殊性质 "[*\+?{}.]"匹配含有这些字符的字符串.

 还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的‘-’将有效.

 

字符类可以出现在其他字符类中,并且可以包含并集运算符(隐式)和交集运算符 (&&)。并集运算符表示至少包含其某个操作数类中所有字符的类。交集运算符表示包含同时位于其两个操作数类中所有字符的类。

字符类运算符的优先级如下所示,按从最高到最低的顺序排列:

1    字面值转义    \x
2    分组[...]
3    范围a-z
4    并集[a-e][i-u]
5    交集[a-z&&[aeiou]]

 

 

个人总结:

主要分两块 1:字符  2  次数

字符有一些特殊表的

\d \w 等  

次数有

*?+等

字符连接的符号

()组合

【】里面的任何一个,在里面的特殊字符.+等都作为一般字符处理。

 |  或

 &&  焦急

【^】求反的字符

 

例子

 

 //对java  package的过滤 形式为com.sunlline.model

 String regex = "^[^|\\/<>?:*. ][^|\\/<>?:* ]*[^|\\/<>?:*.]$";

  说明:不以|\\/<>?:*. 空格 开头、结束

           总结不包含^|\\/<>?:* 空格 

 

这个有不足的就是aa..bb..cc中间有两个点的怎么表达过滤?只能在程序中提取现做一个这样的判断、

input.contain("..")

//对文件夹的过滤

 String regex = "[^|\\/<>?:* ]+";

说明

  不包含|\\/<>?:* 空格 就可以  

 

//对文件的过滤 如.bpl为后缀的

 String regex = "[^|\\/<>?:* ]+(\\.bpl)$";

说明

 不包含|\\/<>?:* 空格 

 后缀为.bpl的文件

 

java类名的过滤

  String regex = "^[^\\d|.\\/<>?:* ][^|.\\/<>?:* ]+";

 不以数字开头,开头不包含|.\\/<>?:* 空格

 后边内容不包含^|.\\/<>?:* 空格

 

上面主要用 [^]    

主要在[]()中 表达式中的特殊字符不起作用,作为一般字符处理。

 

http://blogold.chinaunix.net/u2/67780/showart_2077592.html

http://webservices.ctocio.com.cn/tips/331/7643831.shtml

http://fuliang.iteye.com/blog/169946

 

http://edu.yesky.com/edupxpt/18/2143018.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值