天天看點

正規表達式總結(持續更新中...)

文章目錄

  • ​​郵箱​​
  • ​​手機号碼​​
  • ​​固定電話​​
  • ​​身份證号碼​​
  • ​​URL的校驗​​
  • ​​包含中文的字元串​​
  • ​​正整數​​
  • ​​保留n位小數​​
  • ​​價格​​
  • ​​10-99.99價格​​
  • ​​金額​​
  • ​​0-100整數​​
  • ​​0-10000整數​​
  • ​​密碼​​
  • ​​校驗密碼強度​​
  • ​​校驗日期​​
  • ​​判斷IE的版本​​
  • ​​檔案路徑及擴充名校驗​​
  • ​​IPv4的校驗​​
  • ​​郵政編号的校驗​​
  • ​​QQ号的校驗​​
  • ​​微信号的校驗​​
  • ​​車牌号的校驗​​
  • ​​隻含字母的字元串​​
  • ​​包含中文的字元串​​
  • ​​字元串長度n的校驗​​
  • ​​檔案拓展名的校驗​​

項目中常用的正則

更新于 2021年10月12日 17:37:07

郵箱

const reg1 = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/

const reg2 = [\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?      

手機号碼

const reg1 = /^1[34578]{1}\d{9}$/                  
const reg2 = /^1[34578]\d{9}$|^0\d{9,10}$/   
const reg3 = /^0?(13[0-9]|15[012356789]|18[012346789]|14[5678]|17[678]|170[059]|166|19[89])[0-9]{8}$/      

固定電話

const reg = /^([0-9]{3,4}-{0,1})?[0-9]{7,8}$/      

身份證号碼

const reg = /^[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]$/      

URL的校驗

const reg = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/      

包含中文的字元串

const reg = ^[\\u4e00-\\u9fa5]{0,}$      

正整數

const reg1 = /^[1-9][0-9]*$/
const reg2 = /^(0|\+?[1-9][0-9]*)$/      

保留n位小數

function checkFloat(n) {
  return new RegExp(`^([1-9]+[\d]*(.[0-9]{1,${n}})?)$`)
}

// 保留2位小數
const floatReg = checkFloat(2)

const floatNum1 = 1234.5
console.log(floatReg.test(floatNum1)) // true

const floatNum2 = 1234.55
console.log(floatReg.test(floatNum2)) // true

const floatNum3 = 1234.555
console.log(floatReg.test(floatNum3)) // false      

價格

const reg = /^(0|[1-9][0-9]*)($|\.[0-9]{1,2}$)/      

10-99.99價格

const reg = /^(\d{1,2}(\.\d{1,2})?|99)$/      

金額

精确到2位小數

const reg1 = /^[\u4E00-\u9FA5A-Za-z0-9]{1,5}$/ 

const reg2 = ^[0-9]+(.[0-9]{2})?$      

0-100整數

const reg = /^(([0-9]\d?)|100)$/      

0-10000整數

const reg = /^(0|[1-9][0-9]{0,3}|10000)$/      

密碼

否含有大小寫字母、數字、特殊符号的兩種及以上

const reg = /^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{8,16}$/      

校驗密碼強度

密碼的強度必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間

const reg = ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$      

校驗日期

// `yyyy-mm-dd` 格式的日期校驗
const reg1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/

// `YYYY-MM-DD hh:mm:ss` 格式的日期校驗
const reg2 = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/      

判斷IE的版本

const reg = ^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$      

檔案路徑及擴充名校驗

const reg = ^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$      

IPv4的校驗

const reg = /^(?:(?: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]?)$/      

郵政編号的校驗

const reg= /^\d{6}$/      

QQ号的校驗

const reg = /^[1-9][0-9]{4,10}$/      

微信号的校驗

const reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/      

車牌号的校驗

const reg = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川甯瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂學警港澳]{1}$/      

隻含字母的字元串

const reg = /^[a-zA-Z]+$/      

包含中文的字元串

const reg = /[\u4E00-\u9FA5]/      

字元串長度n的校驗

function checkStrLength(n) {
  return new RegExp(`^.{${n}}$`)
}

// 校驗長度為3的字元串
const lengthReg = checkStrLength(3)

const str1 = 'hhh'
console.log(lengthReg.test(str1)) // true

const str2 = 'hhhhh'
console.log(lengthReg.test(str2)) // false      

檔案拓展名的校驗

function checkFileName (arr) {
  arr = arr.map(name => `.${name}`).join('|')
  return new RegExp(`(${arr})$`)
}

const filenameReg = checkFileName(['jpg', 'png', 'txt'])

const filename1 = 'test.jpg'
console.log(filenameReg.test(filename1)) // true
const filename2 = 'test.png'
console.log(filenameReg.test(filename2)) // true
const filename3 = 'test.txt'
console.log(filenameReg.test(filename3)) // true
const filename4 = 'test.md'
console.log(filenameReg.test(filename4)) // false      

繼續閱讀