//去除首尾的‘/’ input = input.replace(/^\/*|\/*$/g,''); javascript:; 、javascript:void(0) 'javascript:;'.match(/^(javascript\s*\:|#)/); //["javascript:", "javascript:", index: 0, input: "javascript:;"]
var str = "access_token=dcb90862-29fb-4b03-93ff-5f0a8f546250; refresh_token=702f4815-a0ff-456c-82ce-24e4d7d619e6; account_uid=1361177947320160506170322436"; str.match(/account_uid=([^\=]+(\;)|(.*))/ig);
var str = 'asdf html-webpack-plugin for "index/index.html" asdfasdf'; str.match(/html-webpack-plugin for \"(.*)\"/ig); console.log(RegExp.$1) //=>index/index.html
'css/[hash:8].index-index.css'.replace(/\[(?:(\w+):)?(contenthash|hash)(?::([a-z]+\d*))?(?::(\d+))?\]/ig,'(.*)'); //=> css/(.*).index-index.css
var str = '<!DOCTYPE html><html manifest="../../cache.manifest" lang="en"><head><meta charset="UTF-8">'; str.replace(/<html[^>]*manifest="([^"]*)"[^>]*>/,function(word){ return word.replace(/manifest="([^"]*)"/,'manifest="'+url+'"'); }).replace(/<html(\s?[^\>]*\>)/,function(word){ if(word.indexOf('manifest')) return word; return word.replace('<html','<html manifest="'+url+'"'); });
'max_length(12)'.match(/^(.+?)\((.+)\)$/) // ["max_length(12)", "max_length", "12", index: 0, input: "max_length(12)"]
var name = "Doe, John"; name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); //=> "John Doe"
var str = 'asfdf === sdfaf ##' str.match(/[^===]+(?=[===])/g) // 截取 ===以前的內容 str.replace(/\n/g,'') // 替換字符串中的 \n 換行字符
// 精確到1位小數 /^[1-9][0-9]*$|^[1-9][0-9]*\.[0-9]$|^0\.[0-9]$/.test(1.2); // 精確到2位小數 /^[0-9]+(.[0-9]{2})?$/.test(1.221);
// 必須是包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間。 /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/.test("weeeeeeeW2"); //密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符 /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/.test("diaoD123#"); //輸出 true
/^[\u4e00-\u9fa5]{0,}$/.test("可是d"); //false /^[\u4e00-\u9fa5]{0,}$/.test("可是"); //true /^[\u4e00-\u9fa5]{0,}$/.test("可是"); //true
/[\u4E00-\u9FA5]/.test("可是d") //true 由數字、26個英文字母或下劃線組成的字符串 /^\w+$/.test("ds2_@#"); // false
//身份證號(18位)正則 /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test("42112319870115371X"); //輸出 false
//日期正則,簡單斷定,未作月份及日期的斷定 var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/; //輸出 true console.log(dP1.test("2017-05-11")); //輸出 true console.log(dP1.test("2017-15-11")); //日期正則,複雜斷定 var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; //輸出 true console.log(dP2.test("2017-02-11")); //輸出 false console.log(dP2.test("2017-15-11")); //輸出 false console.log(dP2.test("2017-02-29")); // true
var strRegex = "(.jpg|.gif|.txt)"; var re=new RegExp(strRegex); if (re.test(str)){ } /(.jpg|.gif)+(\?|\#|$)/.test('a/b/c.jpgsss'); //=> false /(.jpg|.gif)+(\?|\#|$)/.test('a/b/c.jpg?'); //=> true
//用戶名正則,4到16位(字母,數字,下劃線,減號) /^[a-zA-Z0-9_-]{4,16}$/.test("diaodiao"); //輸出 true
/^\d+$/.test("42"); //正整數正則 -> 輸出 true /^-\d+$/.test("-42"); //負整數正則 -> 輸出 true /^-?\d+$/.test("-42"); //整數正則 -> 輸出 true /^[0-9]+$/.test(25.5455) //正整數正則 -> 輸出 false // 浮點數 /^(?:[-+])?(?:[0-9]+)?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/.test(0.2)
/^\d*\.?\d+$/.test("42.2"); //正數正則 -> 輸出 true /^-\d*\.?\d+$/.test("-42.2"); //負數正則 -> 輸出 true /^-?\d*\.?\d+$/.test("-42.2"); //數字正則 -> 輸出 true
//Email正則 /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test("wowohoo@qq.com"); //輸出 true // 1.郵箱以a-z、A-Z、0-9開頭,最小長度爲1. // 2.若是左側部分包含-、_、.則這些特殊符號的前面必須包一位數字或字母。 // 3.@符號是必填項 // 4.右則部分可分爲兩部分,第一部分爲郵件提供商域名地址,第二部分爲域名後綴,現已知的最短爲2位。 // 最長的爲6爲。 // 5.郵件提供商域能夠包含特殊字符-、_、. /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test("wowohoo@qq.com");
// 國家代碼(2到3位)-區號(2到3位)-電話號碼(7到8位)-分機號(3位) /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test('021-5055455')
//手機號正則 /^1[34578]\d{9}$/.test("13611778887"); //輸出 true //* 13段:130、13一、13二、13三、13四、13五、13六、13七、13八、139 //* 14段:14五、147 //* 15段:150、15一、15二、15三、15五、15六、15七、15八、159 //* 17段:170、17六、17七、178 //* 18段:180、18一、18二、18三、18四、18五、18六、18七、18八、189 //* 國際碼 如:中國(+86) /^((\+?[0-9]{1,4})|(\(\+86\)))?(13[0-9]|14[57]|15[012356789]|17[03678]|18[0-9])\d{8}$/.test("13611778887");
//URL正則 /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test("http://wangchujiang.com"); //輸出 true //獲取url中域名、協議正則 'http://xxx.xx/xxx','https://xxx.xx/xxx','//xxx.xx/xxx' /^(http(?:|s)\:)*\/\/([^\/]+)/.test("http://www.baidu.com"); /^((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)|)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/.test('https://www.baidu.com/s?wd=@#%$^&%$#') // 必須有協議 /^[a-zA-Z]+:\/\//.test("http://www.baidu.com");
//ipv4地址正則 /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test("192.168.130.199"); //輸出 true
//RGB Hex顏色正則 /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/.test("#b8b8b8"); //輸出 true
//QQ號正則,5至11位 /^[1-9][0-9]{4,10}$/.test("398188661");//輸出 true
//微信號正則,6至20位,以字母開頭,字母,數字,減號,下劃線 /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test("jslite"); //輸出 true
//車牌號正則 /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/.test("滬B99116") //輸出 true
// HEX 顏色正則 /^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test("#ccb2b2")
//用戶名正則,4到16位(字母,數字,下劃線,減號) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 true console.log(uPattern.test("caibaojian"));
//密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符 var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/; //輸出 true console.log("=="+pPattern.test("caibaojian#"));
//正整數正則 var posPattern = /^\d+$/; //負整數正則 var negPattern = /^-\d+$/; //整數正則 var intPattern = /^-?\d+$/; //輸出 true console.log(posPattern.test("42")); //輸出 true console.log(negPattern.test("-42")); //輸出 true console.log(intPattern.test("-42"));
//正數正則 var posPattern = /^\d*\.?\d+$/; //負數正則 var negPattern = /^-\d*\.?\d+$/; //數字正則 var numPattern = /^-?\d*\.?\d+$/; console.log(posPattern.test("42.2")); console.log(negPattern.test("-42.2")); console.log(numPattern.test("-42.2"));
//Email正則 var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; //輸出 true console.log(ePattern.test("99154507@qq.com"));
//手機號正則 var mPattern = /^1[34578]\d{9}$/; //http://caibaojian.com/regexp-example.html //輸出 true console.log(mPattern.test("15507621888"));
//身份證號(18位)正則 var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; //輸出 true console.log(cP.test("11010519880605371X"));
//URL正則 var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/; //輸出 true console.log(urlP.test("http://caibaojian.com"));
//ipv4地址正則 var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; //輸出 true console.log(ipP.test("115.28.47.26"));
//RGB Hex顏色正則 var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/; //輸出 true console.log(cPattern.test("#b8b8b8"));
//日期正則,簡單斷定,未作月份及日期的斷定 var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/; //輸出 true console.log(dP1.test("2017-05-11")); //輸出 true console.log(dP1.test("2017-15-11")); //日期正則,複雜斷定 var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; //輸出 true console.log(dP2.test("2017-02-11")); //輸出 false console.log(dP2.test("2017-15-11")); //輸出 false console.log(dP2.test("2017-02-29"));
//QQ號正則,5至11位 var qqPattern = /^[1-9][0-9]{4,10}$/; //輸出 true console.log(qqPattern.test("65974040"));
//微信號正則,6至20位,以字母開頭,字母,數字,減號,下劃線 var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/; //輸出 true console.log(wxPattern.test("caibaojian_com"));
//車牌號正則 var cPattern = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/; //輸出 true console.log(cPattern.test("粵B39006"));
//包含中文正則 var cnPattern = /[\u4E00-\u9FA5]/; //輸出 true console.log(cnPattern.test("蔡寶堅"));
var re=/正則表達式/; re.test($("#id").val())
正則表達式有多種不一樣的風格。下表是在PCRE中元字符及其在正則表達式上下文中的行爲的一個完整列表:javascript
將下一個字符標記爲一個特殊字符、或一個原義字符、或一個向後引用、或一個八進制轉義符。css
例如,「n」匹配字符「n」。「\n」匹配一個換行符。序列「\\」匹配「\」而「\(」則匹配「(」。 ^ 匹配輸入字符串的開始位置。若是設置了RegExp對象的Multiline屬性,^也匹配「\n」或「\r」以後的位置。 $ 匹配輸入字符串的結束位置。若是設置了RegExp對象的Multiline屬性,$也匹配「\n」或「\r」以前的位置。 * 匹配前面的子表達式零次或屢次。例如,zo*能匹配「z」以及「zoo」。*等價於{0,}。 + 匹配前面的子表達式一次或屢次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等價於{1,}。 ? 匹配前面的子表達式零次或一次。例如,「do(es)?」能夠匹配「do」或「does」中的「do」。?等價於{0,1}。 {n} n是一個非負整數。匹配肯定的n次。例如,「o{2}」不能匹配「Bob」中的「o」,可是能匹配「food」中的兩個o。 {n,} n是一個非負整數。至少匹配n次。例如,「o{2,}」不能匹配「Bob」中的「o」,但能匹配「foooood」中的全部o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。 {n,m} m和n均爲非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o{1,3}」將匹配「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。 ? 當該字符緊跟在任何一個其餘限制符(*,+,?,{n},{n,},{n,m})後面時,匹配模式是非貪婪的。非貪婪模式儘量少的匹配所搜索的字符串,而默認的貪婪模式則儘量多的匹配所搜索的字符串。例如,對於字符串「oooo」,「o+?」將匹配單個「o」,而「o+」將匹配全部「o」。 . 匹配除「\n」以外的任何單個字符。要匹配包括「\n」在內的任何字符,請使用像「[.\n]」的模式。
前瞻
(pattern) 匹配pattern並獲取這一匹配。所獲取的匹配能夠從產生的Matches集合獲得,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號字符,請使用「\(」或「\)」。 (?:pattern) 匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供之後使用。這在使用或字符「(|)」來組合一個模式的各個部分是頗有用。例如「industr(?:y|ies)」就是一個比「industry|industries」更簡略的表達式。 (?=pattern) 正向預查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不須要獲取供之後使用。例如,「Windows(?=95|98|NT|2000)」能匹配「Windows2000」中的「Windows」,但不能匹配「Windows3.1」中的「Windows」。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配以後當即開始下一次匹配的搜索,而不是從包含預查的字符以後開始。 (?!pattern) 負向預查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不須要獲取供之後使用。例如「Windows(?!95|98|NT|2000)」能匹配「Windows3.1」中的「Windows」,但不能匹配「Windows2000」中的「Windows」。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配以後當即開始下一次匹配的搜索,而不是從包含預查的字符以後開始
x|y 匹配x或y。 例如,「z|food」能匹配「z」或「food」。「(z|f)ood」則匹配「zood」或「food」。 [xyz] 字符集合。匹配所包含的任意一個字符。例如,「[abc]」能夠匹配「plain」中的「a」。 [^xyz] 負值字符集合。匹配未包含的任意字符。例如,「[^abc]」能夠匹配「plain」中的「p」。 [a-z] 字符範圍。匹配指定範圍內的任意字符。例如,「[a-z]」能夠匹配「a」到「z」範圍內的任意小寫字母字符。 [^a-z] 負值字符範圍。匹配任何不在指定範圍內的任意字符。例如,「[^a-z]」能夠匹配任何不在「a」到「z」範圍內的任意字符。 \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」能夠匹配「never」中的「er」,但不能匹配「verb」中的「er」。 \B 匹配非單詞邊界。「er\B」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。 \cx 匹配由x指明的控制字符。例如,\cM匹配一個Control-M或回車符。x的值必須爲A-Z或a-z之一。不然,將c視爲一個原義的「c」字符。 \d 匹配一個數字字符。等價於[0-9]。 \D 匹配一個非數字字符。等價於[^0-9]。 \f 匹配一個換頁符。等價於\x0c和\cL。 \n 匹配一個換行符。等價於\x0a和\cJ。 \r 匹配一個回車符。等價於\x0d和\cM。 \s 匹配任何空白字符,包括空格、製表符、換頁符等等。等價於[\f\n\r\t\v]。 \S 匹配任何非空白字符。等價於[^\f\n\r\t\v]。 \t 匹配一個製表符。等價於\x09和\cI。 \v 匹配一個垂直製表符。等價於\x0b和\cK。 \w 匹配包括下劃線的任何單詞字符。等價於「[A-Za-z0-9_]」。 \W 匹配任何非單詞字符。等價於「[^A-Za-z0-9_]」。 \xn 匹配n,其中n爲十六進制轉義值。十六進制轉義值必須爲肯定的兩個數字長。例如, 「\x41」匹配「A」。「\x041」則等價於「\x04&1」。正則表達式中可使用ASCII編碼。. \num 匹配num,其中num是一個正整數。對所獲取的匹配的引用。例如,「(.)\1」匹配兩個連續的相同字符。 \n 標識一個八進制轉義值或一個向後引用。若是\n以前至少n個獲取的子表達式,則n爲向後引用。不然,若是n爲八進制數字(0-7),則n爲一個八進制轉義值。 \nm 標識一個八進制轉義值或一個向後引用。若是\nm以前至少有nm個得到子表達式,則nm爲向後引用。若是\nm以前至少有n個獲取,則n爲一個後跟文字m的向後引用。若是前面的條件都不知足,若n和m均爲八進制數字(0-7),則\nm將匹配八進制轉義值nm。 \nml 若是n爲八進制數字(0-3),且m和l均爲八進制數字(0-7),則匹配八進制轉義值nml。 \un 匹配n,其中n是一個用四個十六進制數字表示的Unicode字符。例如,\u00A9匹配版權符號(?)。
驗證數字的正則表達式集() 驗證數字:^[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)$ 正確格式爲:0一、09和一、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+)? IP地址:^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$