常用js正規表示式

indexman發表於2017-10-15

以下內容整理自網路,以備自用和分享:

js中15個常用的正規表示式+正則集合

1 使用者名稱正則

//使用者名稱正則,4到16位(字母,數字,下劃線,減號)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//輸出 true
console.log(uPattern.test("iFat3"));

2 密碼強度正則

//密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字元
var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
//輸出 true
console.log("=="+pPattern.test("iFat3#"));

3 整數正則

//正整數正則
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"));

4 數字正則

可以是整數也可以是浮點數

//正數正則
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"));

5 Email正則

//Email正則
var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//輸出 true
console.log(ePattern.test("65974040@qq.com"));

6 手機號碼正則

//手機號正則
var mPattern = /^[1][3][0-9]{9}$/;
//輸出 true
console.log(mPattern.test("13900000000"));

7 身份證號正則

//身份證號(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"));

8 URL正則

//URL正則
var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//輸出 true
console.log(urlP.test("http://42du.cn"));

9 IPv4地址正則

//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"));

10 十六進位制顏色正則

//RGB Hex顏色正則
var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
//輸出 true
console.log(cPattern.test("#b8b8b8"));

11 日期正則

//日期正則,簡單判定,未做月份及日期的判定
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"));

12 QQ號碼正則

//QQ號正則,5至11位
var qqPattern = /^[1-9][0-9]{4,10}$/;
//輸出 true
console.log(qqPattern.test("65974040"));

13 微訊號正則

//微訊號正則,6至20位,以字母開頭,字母,數字,減號,下劃線
var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
//輸出 true
console.log(wxPattern.test("RuilongMao"));

14 車牌號正則

//車牌號正則
var cPattern = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/;
//輸出 true
console.log(cPattern.test("京K39006"));

15 包含中文正則

//包含中文正則var cnPattern= /[\u4E00-\u9FA5]/;//輸出 trueconsole.log(cnPattern.test("42度"));16.正則集合:

驗證數字:^[0-9]+$
驗證n位的數字:^\d{n}$
驗證至少n位數字:^\d{n,}$
驗證m-n位的數字:^\d{m,n}$
驗證零和非零開頭的數字:^((0|[1-9])[0-9]*)$
驗證有兩位小數的正實數:^(0|[1-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之間,只能包含字元、數字和下劃線。
驗證漢字:^[\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}|\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和15、24/30、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+)?$



12個常用的js正規表示式

1.在input框中只能輸入金額,其實就是隻能輸入最多有兩位小數的數字

//第一種在input輸入框限制
 <input type="text" maxlength="8" class="form-control" id="amount" style="margin-right: 2px;" value="" onChange="count();" onkeyup="if (this.value==this.value2) return; if (this.value.search(/^\d*(?:\.\d{0,2})?$/)==-1) this.value=(this.value2)?this.value2:'';else this.value2=this.value;">元
//第二種對於表單動態增加的方式,只能在js方法中驗證。
 var amount=$("#amount").val();
 if (amount.search(/^\d*(?:\.\d{0,2})?$/)==-1) {
   alert("金額格式不對,最多有兩位小數");
   return false;
}


2.驗證郵箱格式

var reg=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
 var email=$("#email").val();
 if(!reg.test(email) ){
    alert("請輸入符合規範的郵箱賬號!");
    return false;
   }
3.密碼採用數字、字母、特殊字元且長度為8-20位 

function validatePwd(str) {
if (/^.*?[\d]+.*$/.test(str) && /^.*?[A-Za-z]/.test(str)
&& /^.*?[~/`!@#$%^&*()_+|{}?;:><\-\]\\[\/].*$/.test(str) && /^.{8,20}$/.test(str)) {
return true;
}
return false;
}
4.驗證電話號碼

/**
 * 驗證電話號碼
 * @param phoneValue 要驗證的電話號碼
 * @returns 匹配返回true 不匹配返回false
 */
function validatePhone(phoneValue) {
 phoneValue = valueTrim(phoneValue);
 var reg = /^[1][0-9]{10}$/;
 return reg.test(phoneValue);
}
5.判斷是否是漢字

/**
 * 判斷是否是漢字
 *
 * @param charValue
 *   要驗證的資料
 * @returns 匹配返回true 不匹配返回false
 */
function isCharacter(charValue) {
 var reg = /^[\u4e00-\u9fa5]{0,}$/;
 return reg.test(charValue);
}
6.是否為字母:true:是,false:不是

function isChar(charValue){
 var charPattern=/^[a-zA-Z]*$/; //是否為字母
 result=charPattern.test(charValue);
 return result;
}
7.判斷是否為數字

function isNum(numValue){
 var numPattern=/^\d*$/; //數字的正規表示式
 result=numPattern.test(numValue);
 return result;
}
8.整數的正規表示式

function isInt(intValue){
  var intPattern=/^0$|^[1-9]\d*$/; //整數的正規表示式
 result=intPattern.test(intValue);
  return result;
 }
9.是否為字母和數字

function isCharNum(flagValue){
 var flagPattern=/^[a-zA-Z0-9]*$/; //是否為字母和數字
 result=flagPattern.test(flagValue);
 return result;
}
10.檢驗18位身份證號碼 

/**
 * 檢驗18位身份證號碼(15位號碼可以只檢測生日是否正確即可,自行解決)
 *
 * @param idCardValue
 *   18位身份證號
 * @returns 匹配返回true 不匹配返回false
 */
function idCardVildate(cid) {
var arrExp = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];// 加權因子
var arrValid = [ 1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2 ];// 校驗碼
var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (reg.test(cid)) {
var sum = 0, idx;
for (var i = 0; i < cid.length - 1; i++) {
// 對前17位數字與權值乘積求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 計算模(固定演算法)
idx = sum % 11;
// 檢驗第18為是否與校驗碼相等
return arrValid[idx] == cid.substr(17, 1).toUpperCase();
} else {
return false;
}
}
11.驗證15位數身份證號碼中的生日是否是有效生日

function isValidityBrithBy15IdCard(idCard15) {
 var year = idCard15.substring(6, 8);
 var month = idCard15.substring(8, 10);
 var day = idCard15.substring(10, 12);
 var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
 // 對於老身份證中的你年齡則不需考慮千年蟲問題而使用getYear()方法
 if (temp_date.getYear() != parseFloat(year)
   || temp_date.getMonth() != parseFloat(month) - 1
   || temp_date.getDate() != parseFloat(day)) {
  return false;
 } else {
  return true;
 }
}
12.驗證18位數身份證號碼中的生日是否是有效生日

function isValidityBrithBy18IdCard(idCard18) {
 var year = idCard18.substring(6, 10);
 var month = idCard18.substring(10, 12);
 var day = idCard18.substring(12, 14);
 var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
 // 這裡用getFullYear()獲取年份,避免千年蟲問題
 if (temp_date.getFullYear() != parseFloat(year)
   || temp_date.getMonth() != parseFloat(month) - 1
   || temp_date.getDate() != parseFloat(day)) {
  return false;
 } else {
  return true;
 }
}




相關文章