<small>
正則
正則是一個特殊的字符串,用來規范其他字符串的輸入,驗證輸入的字符串是否滿足一定的規范
如郵箱、手機號碼等的校驗。
通過正則表達式的學習,完成簡單郵箱的校驗
1、簡單正則
[0-9]:0~9當中的一個
判斷一輸入為一個有效數字(整數)
String reg="[0-9]";
String inStr="8";
boolean flag=inStr.matches(reg);//true
[a-z]:a~z當中的一個
[0-9a-zA-z_]:數字 字母和 下滑下
非0~9中的其中一個 [^0-9] 表示取反,[abc]:非 abc 中的一個
2、轉義字符表示正則
\d: 數字
\d:轉義
\w: azAZ0~9_
\s: 空白字符(空格,tab,回車等)
\D: 非數字 (大寫代表非其中的一個)
reg="\\w";
inStr="$"
flag=intStr.matches(reg);//false
3、聯合正則
?表示0或者1個
+表示1到多個
*表示0到多個(通配符)
{n}表示 n 個
{n,m}表示 n 到 m 個(n,m 都包括)
{n,}表示 n 以上,n 到多個
reg="[0-9]{5}";
intStr="34567";
flag=intStr.matches(reg);//true
4、分組
(成員1|成員2|……)
5、正則表達式規范
^以此開通,$結尾
java 中沒有反應,^ 與$沒有多大的效果,有與沒有都可以
javascript 中正則:^與$,有與沒有完全不同
5、正則方法
String[] split(string reg)
對一個字符串進行拆分,并返回字符子串數組
可以寫正則,更多的時候寫的是字符數組
String str="i love u"
String reg="\\s";
String[] results=str.split(reg);
replace (string subStr,String replaceStr)
將原字符串中 subStr替換成 replaceStr(不支持正則)
replace All(string reg,String replaceStr)
將原字符串中 reg替換成 replaceStr(支持正則)
//臟話和諧
reg="(nmb|nnd|wqnmgb)";
String talkMessage="nnd,別跑,wqnmgb,nmd,有種你出來.";
talkMessage=talkMessage.replaceAll(reg,"****");
常用正則
Email:var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var pattern=/\b(^['_A-Za-z0-9-]+(\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;
youbian:var pattern=/[0-9]{1}(\d+){5}/;
phone:var pattern=/((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/;
var pattern=/^((\(\d{2,3}\))|(\d{3}\-))?1\d{10}$/;
nickname:var pattern = /^\w{4,20}|[\u4e00-\u9fa5]{2,20}$/;
password:var pattern = /^\w{6,20}$/;
方法一:
var re=/正則表達式/;
re.test($("txtid").val())
方法二:
$("txtid").val.match(/正則表達式/);
驗證數字的正則表達式集
驗證數字:^[0-9]*$
驗證n位的數字:^\d{n}$
驗證至少n位數字:^\d{n,}$
驗證m-n位的數字:^\d{m,n}$
驗證零和非零開頭的數字:^(0|[1-9][0-9]*)$
驗證有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
驗證有1-3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
驗證非零的正整數:^\+?[1-9][0-9]*$
驗證非零的負整數:^\-[1-9][0-9]*$
驗證非負整數(正整數 + 0) ^\d+$
驗證非正整數(負整數 + 0) ^((-\d+)|(0+))$
驗證長度為3的字符:^.{3}$
驗證由26個英文字母組成的字符串:^[A-Za-z]+$
驗證由26個大寫英文字母組成的字符串:^[A-Z]+$
驗證由26個小寫英文字母組成的字符串:^[a-z]+$
驗證由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
驗證由數字、26個英文字母或者下劃線組成的字符串:^\w+$
驗證用戶密碼:^[a-zA-Z]\w{5,17}$ 正確格式為:以字母開頭,長度在6-18之間,只能包含字符、數字和下劃線。
驗證是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
驗證漢字:^[\u4e00-\u9fa5],{0,}$
驗證Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
驗證InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
驗證電話號碼:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正確格式為:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
驗證身份證號(15位或18位數字):^\d{15}|\d{}18$
驗證一年的12個月:^(0?[1-9]|1[0-2])$ 正確格式為:“01”-“09”和“1”“12”
驗證一個月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正確格式為:01、09和1、31。
整數:^-?\d+$
非負浮點數(正浮點數 + 0):^\d+(\.\d+)?$
正浮點數 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮點數(負浮點數 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
負浮點數 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮點數 ^(-?\d+)(\.\d+)?
中國電話號碼驗證
匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222
正則表達式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"
中國郵政編碼驗證
匹配形式如:215421
正則表達式 "d{6}"
電子郵件驗證
匹配形式如:justali@justdn.com
正則表達式 "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"
身份證驗證
匹配形式如:15位或者18位身份證
正則表達式 "d{18}|d{15}"
常用數字驗證
正則表達式
"d{n}" n為規定長度
"d{n,m}" n到m的長度范圍
非法字符驗證
匹配非法字符如:< > & / ' |
正則表達式 [^<>&/|'\]+
日期驗證
匹配形式如:20030718,030718
范圍:1900--2099
正則表達式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7}
評注:匹配形式如 0511-4405222 或 021-87888822
匹配騰訊QQ號:[1-9][0-9]{4,}
評注:騰訊QQ號從10000開始
匹配中國郵政編碼:[1-9]\d{5}(?!\d)
評注:中國郵政編碼為6位數字
匹配身份證:\d{15}|\d{18}
評注:中國的身份證為15位或18位
// ////////////////////基本正則表達式///////////////////
//非空驗證 function NotNull (str) { return (str!=""); }
//郵件地址驗證
function checkEmail (str) {
//郵件地址正則表達式 isEmail1=/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;
//郵件地址正則表達式 isEmail2=/^.*@[^_]*$/;
//驗證郵件地址,返回結果 return (isEmail1.test(str)&&isEmail2.test(str));
} //身份證驗證 function checkIDCard (str) {
//身份證正則表達式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份證正則表達式(18位) isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
//驗證身份證,返回結果 return (isIDCard1.test(str)||isIDCard2.test(str)); }
//IP驗證 function checkIP (str)
{ //IP正則表達式 IP='(25[0-5]|2[0-4]\\d|1\\d\\d|\\d\\d|\\d)';
IPdot=IP+'\\.'; isIPaddress=new RegExp('^'+IPdot+IPdot+IPdot+IP+'$');
//驗證IP,返回結果 return (isIPaddress.test(str)); }
//主頁(網址)驗證 function checkHomepage (str) {
//主頁正則表達式 //isHomepage=/^\w+([\.\-]\w)*$/; isHomepage=/^\w+(\.\w+)+\.\w+$/;
//驗證主頁,返回結果 return (isHomepage.test(str)); }
//是否數字 function isNum (str) { //isNumber=/^([1-9]\d*(\.\d+)?)|(\d+(\.\d+))$/; isNumber=/^\d+(\.\d+)?$/;
//驗證并返回結果 return (isNumber.test(str)); }
//是否整數 function isInt (str) { isInteger=/^\d+$/;
//驗證并返回結果 return (isInteger.test(str)); }
//是否字母 function isChar (str) { isCharacter=/^[A-Za-z]+$/;
//驗證并返回結果 return (isCharacter.test(str)); }