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