正則表達式

<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)); } 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容