1.正则表达式:
作用:查找、分割、替换字符串
java:后台验证
javascript:前台验证
2.语法规则:
a.普通字符匹配: a 就匹配a 1就匹配1 汉字 [\u4e00-\u9fa5]
b.匹配特殊字符 转义字符 \ 加对应字符;\\代表\
c.标准字符集合:注意区分大小写,大写是相反的意思
\d:匹配数字 0-9
\w:字母或数字或下划线(A~Z,a~z,0~9)
\s: 空格、制表符、换行符等空白字符其中任意一个
. : 匹配所有单个字符
\D:除数字之外的所有字符
\W:除
字母或数字或下划线之外的
2.字符集: []能够匹配方括号中任意一个字符
^5 以5开头的地方匹配 $以字符串结尾的地方匹配
\b 匹配一个单词边界 [0-9] 要按小的放前面,[9-0]就匹配不到
[12345]==[1-5] 匹配1-5之间的任意字符
[^abc] 匹配abc之外的任一个字符
[f-k] 匹配f-k之间的任意一个字符
[^A-F0-3] 匹配A-F,0-3之外的任意一个字符
3.匹配次数:
{n} :n代表匹配的次数
{m,n}: 至少m个,最多n个 先按n个匹配,不够再匹配少的 //贪婪匹配
{m,n}? : 优先从m个数匹配 //尽可能少匹配 非贪婪模式
{m,} 至少匹配m个
? 匹配0或者1次,相当于{0,1}
+ 至少出现1次,{1,}
* 不出现或者无穷次 {0,}
^1[3579]\d{9}$ 13等开头,11位结束:17123456789 正确 17123456789333错误
4.选择符和分组
a | b 匹配a或者b 相当于[]
() 代表分组
匹配对称的数:(\w)(\w)(\w)(\w)\4\3\2\1 例子:
abcddcba //先取四个字符,然后依次取第4组数据,3,2,1组数据
匹配对应的数: (123)
(abc){2}(rt)
\1\3 例子:123
abcabcrt
123rt //先123再两组abc,rt,之后去第一组,最后取第三组
5.Eclipse上操作正则表达式:
1.
String reg=
"\\d{2}\\w{3}"
;
Pattern pattern=Pattern.compile(reg);//取Pattern
compile(reg,2)忽略大小写匹配
Matcher matcher=pattern.matcher("11abc22abc33abc");//得到Macher
System.out.println("-all-"+matcher.matches()+"-some-"+matcher.lookingAt());//进行全部匹配
matcher.reset();
//lookingAt()已经将指针移动到22abc,所以需要重置,才能输出全部匹配串
while(matcher.find()){
System.out.println("-groupshow-"+matcher.group()); //11abc,22abc,33abc
}
6.js使用正则表达式:
//声明一个正则表达式 i:忽略大小写 g:进行全局匹配 ^:开始 $:结束
var
varRegex = /\w{2}\d{2}/ig;
//1:部分匹配
var varRegex = /^\w{2}\d{2}$/ig; //1:声明方式 建议使用 加
^$
全部匹配
var varRegex2 = new RegExp("((\\w{2})(\\d{2}))","ig");//2:声明方式 //分组
var varRegex3 = /\d{2}/ig;
//方法1:test() 校验 返回是boolean 常用
var bool = varRegex.test("aa11");
//方法2:match() 匹配返回数组 常用
var varArray = "aa11bb22cc33".match(varRegex2); aa11,bb11,cc33
//方法3:exec(): 返回的是一个数组。该数组包含了匹配该模式的第一个子字符串以及该子字符串中匹配相关分组的字符串
var varexecArray = varRegex2.exec("aa11bb22cc33"); aa11,aa11,aa,11 注意分组
//方法4:search():返回与正则表达式查找内容匹配的第一个子字符串的位置
var varindex = "aa11bb22cc33".search(varRegex3); 2
//方法5 :split(regex):按照指定的模式切割字符串,返回一个数组
var varSplitArray = "aa11bb22cc33".split(varRegex3); aabbcc
//方法6 :replace():替换字符串
var varStr = "aa11bb22cc33".replace(varRegex3,"AA"); aaAAbbBBccCC