一次性搞定正则表达式
——我一直不太信任自己的记忆力,所以我把它们都写下来
从学java开始就在接触正则表达式,然后一直都没有精确的掌握它,今天有一个正则表达式的需求,然后又花了半小时梳理了下。下面我们一步一步开始(请仔细记清楚一步步的操作,否则你都不想往下看了 ),推荐大家打开http://tool.oschina.net/regex/ 在线正则表达式边看边测试
- ^ 和$表示以字符串开始和以字符串结尾。例:^abc 表示必须以abc开始(如:abcd,abcefd),abc$ 表示必须以abc结尾(如:);^abc$ 只能是abc(abc是个整体,abcabc不匹配) ;abc 表示包含abc的字符串
- * 和 + 和 ? 分别表示出现0次或多次,1次或多次,0次或1次。例:abc*表示有0个或多个abc,其他两个同理
- 上面的*+?完全可以用范围代替,abc{2}表示ab后面有至少两个c,如abcc,dfdabccccc都是符合的;abc{2}$ 只有以abcc结尾的符合,如343abcc
- abc{1,2} 表示ab后面跟着1或2个c;
- abc{3,} 表示ab后面跟着至少3个c; {,3}这种是不正确的
- | 或运算 ab|cd 表示字符串里有ab或者cd;
- . 可以替换任意字符
下面是几种是需要记住的
"[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
下面看看具体的实例,比如我今天做的:一个输入框,可以输入数字,也可以输入多个数字用逗号隔开,或者两个数字用~分隔。
我写的正则表达式 : ((^[0-9]+[~]?)?|^([0-9]+[,])+)[0-9]+$