1.字元比對範圍
a:精确比對單個字元
x|y:允許出現的2個字元
[xyz]:字元集合,允許出現集合内任意單個字元
[a-z] [a-z] [0-9]:字元範圍
[^xyz] [^0-9]:集合内字元不允許出現
2.元字元
\d :比對任意單個數字
\d :比對\d規則之外的任意單個字元
\w :比對任意單個字母數字下劃線
\w :比對\w之外的任意單個字元
\s :比對單個空格
\n :比對單個換行符
\. :特殊字元 隻比對.
. :比對任意單個字元(換行符除外)
3.多次重複比對
a{3} :精準3次比對
a{3,} :最少出現3次
\d{3,5} :約定出現最少次數與最大次數
\d* :可以出現零次至無限次,相當于{0,}
\d+ :最少出現一次,相當于{1,}
\d? :最多出現一次,相當于{0,1}
4.定位比對
^a.* :頭比對 以a開頭
.*a$ :未比對 以a結尾
^a.*a$:全字比對 以a開頭并且以a結尾
5.貪婪模式
在滿足條件的情況下盡可能多的比對
例如:112233112 正則:\d{6,8} 結果就是:11223311
6.非貪婪模式
在滿足條件的情況下盡可能少比對
例如:112233112 正則:\d{6,8}? 結果就是:112233
7.表達式分組
将正規表達式 分組為多個子表達式
例如:12345678或者123456 正則:(^\d{4}$)|(^\d{8}$)
備注:
在javascript中,正規表達式:/^[\u4e00-\u9fa5]{2,8}$/ 前後需要添加/
例如比對人姓名:
var regex1=/^[\u4e00-\u9fa5]{2,8}$/;
var name="李四";
regex1.test(name);//傳回值為true:比對上 false:未比對到
在java中,比對正規表達式:
pattern p = pattern.compile("([\\u4e00-\\u9fa5]{2,10})([a-za-z]{10,20})");//其中比對中文的\u4e00前面需要在添加\
macther m = p.matcher("張三zhangsan");
m.find();//傳回true有比對到 false沒有比對到
如果比對到多個使用循環擷取
while(m.find()){
m.group(0); //表示符合表達式所有的資訊:張三zhangsan,
m.group(1); //表示符合分組第一部分的漢字([\\u4e00-\\u9fa5]{2,10}):張三
m.group(2); //表示符合分組第二部分的英文([a-za-z]{10,20}):zhangsan
}