JS Regex

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

Regex


  • 匹配html标签中的内容

    /(?<=>)[^>]+(?=<[\\/]?\\w+.*>)/g
    
  • 匹配html标签

    /<[^>]+>/g
    
    const endReg = /<("[^"]*"|'[^']*'|[^'">])*>/g
    
  • html注释

    /^<!--[\\s\\S]*?-->$/
    
    const noteReg = /<!--(.*?)-->/g
    
    const htmlStr = '<!--一个div标签--> <div></div> <!--一个div标签--> <div></div>'
    
    console.log(noteReg.exec(htmlStr))
    // [
    //   '<!--一个div标签-->',
    //   '一个div标签',
    //   index: 0,
    //   input: '<!--一个div标签--> <div></div> <!--一个div标签--> <div></div>',
    //   groups: undefined
    // ]
    console.log(noteReg.exec(htmlStr))
    // [
    //   '<!--一个div标签-->',
    //   '一个div标签',
    //   index: 27,
    //   input: '<!--一个div标签--> <div></div> <!--一个div标签--> <div></div>',
    //   groups: undefined
    // ]
    
  • 匹配html中的style

    const styleReg = /style="[^=>]*"([(\\s+\\w+=)|>])/g
    
    const htmlStr = '<div style="background:#000;"><span style="color:#fff"></span></div>'
    
    console.log(styleReg.exec(htmlStr))
    // [
    //   'style="background:#000;">',
    //   '>',
    //   index: 5,
    //   input: '<div style="background:#000;"><span style="color:#fff"></span></div>',
    //   groups: undefined
    // ]
    console.log(styleReg.exec(htmlStr))
    // [
    //   'style="color:#fff">',
    //   '>',
    //   index: 36,
    //   input: '<div style="background:#000;"><span style="color:#fff"></span></div>',
    //   groups: undefined
    // ]
    
  • 匹配html中的颜色

    const colorReg = /#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/g
    
    const htmlStr = '<div style="background:#000;"><span style="color:#fff"></span></div>'
    
    console.log(colorReg.exec(htmlStr))
    // [
    //   '#000',
    //   '000',
    //   index: 23,
    //   input: '<div style="background:#000;"><span style="color:#fff"></span></div>',
    //   groups: undefined
    // ]
    console.log(colorReg.exec(htmlStr))
    // [
    //   '#fff',
    //   'fff',
    //   index: 49,
    //   input: '<div style="background:#000;"><span style="color:#fff"></span></div>',
    //   groups: undefined
    // ]
    
  • 是否html标签(宽松匹配)

    /<(.*)>.*<\\/\\1>|<(.*) \\/>/
    
    /<("[^"]*"|'[^']*'|[^'">])*>/g
    
  • 匹配img和src

    const imgReg = /<img.*?src=[\\"|\\']?(.*?)[\\"|\\']?\\s.*?>/ig
    
    const htmlStr = '<div></div><img src="sunshine.png" /><img src="sunshine111.png" />'
    
    console.log(imgReg.exec(htmlStr))
    // [
    //   '<img src="sunshine.png" />',
    //   'sunshine.png',
    //   index: 11,
    //   input: '<div></div><img src="sunshine.png" /><img src="sunshine111.png" />',
    //   groups: undefined
    // ]
    console.log(imgReg.exec(htmlStr))
    // [
    //   '<img src="sunshine111.png" />',
    //   'sunshine111.png',
    //   index: 37,
    //   input: '<div></div><img src="sunshine.png" /><img src="sunshine111.png" />',
    //   groups: undefined
    // ]
    
  • 大于等于0, 小于等于150, 支持小数位出现5, 如145.5, 用于判断考卷分数

    /^150$|^(?:\\d|[1-9]\\d|1[0-4]\\d)(?:.5)?$/
    
  • 是否小数

    /^\\d+\\.\\d+$/
    
    /^[-\\+]?\\d+(\\.\\d+)?$/
    
  • 保留n位小数

    function checkFloat(n) {
      return new RegExp(`^([1-9]+[\\d]*(.[0-9]{1,${n}})?)$`)
    }
    // 保留2位小数
    const floatReg = checkFloat(2)
    
  • 整数

    /^[-+]?\\d*$/
    
  • 纯数字

    /^\\d{1,}$/
    
  • 纯英文字母

    /^[a-zA-Z]+$/
    
  • 纯小写英文字母组成

    /^[a-z]+$/
    
  • 纯大写英文字母

    /^[A-Z]+$/
    
  • 不能包含字母

    /^[^A-Za-z]*$/
    
  • 是否由数字和字母组成

    /^[A-Za-z0-9]+$/
    
  • 字符串长度n的校验

    function checkStrLength(n) {
      return new RegExp(`^.{${n}}$`)
    }
    
    // 校验长度为3的字符串
    const lengthReg = checkStrLength(3)
    
  • 密码强度正则

    • 最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

      /^.*(?=.{6,})(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/
      
    • 必须包含字母、数字、特称字符,至少8个字符,最多30个字符

      /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}/
      
  • 微信号,6至20位,以字母开头,字母,数字,减号,下划线

    /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/
    
  • 是否qq号格式正确

    /^[1-9][0-9]{4,10}$/
    
  • 用户名正则,4到16位(字母,数字,下划线,减号)

    /^[a-zA-Z0-9_-]{4,16}$/
    
  • 纯中文/汉字

    /[\\u4E00-\\u9FA5]/
    
    /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/
    
  • 中国邮政编码

    /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}$/
    
    • 邮政编号的校验

      /^\\d{6}$/
      
  • 只包含中文和数字

    /^((?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])|(\\d))+$/
    
  • 视频链接地址(视频格式可按需增删)

    /^https?:\\/\\/.*?(?:swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4)$/i
    
  • 图片链接地址(图片格式可按需增删)

    /^https?:\\/\\/.*?(?:gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)$/i
    
  • base64格式

    /^\\s*data:(?:[a-z]+\\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*?)\\s*$/i
    
  • 电话(座机)

    /^0\\d{2,3}-\\d{7,8}$/
    
  • 手机号

    • 手机号

      /^[1][3,4,5,6,7,8,9][0-9]{9}$/
      
    • 中国手机号(严谨), 根据工信部2019年最新公布的手机号段

      /^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[1|8|9]))\\d{8}$/
      
    • 中国手机号(宽松), 只要是13,14,15,16,17,18,19开头即可

      /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/
      
    • 中国手机号(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条

      /^(?:(?:\\+|00)86)?1\\d{10}$/
      
  • 身份证

    • 一代身份证号(15位数字)

      /^\\d{8}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}$/
      
    • 二代身份证号(18位数字),最后一位是校验位,可能为数字或字符X

      /^\\d{6}(18|19|20)\\d{2}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}(\\d|X|x)$/
      
    • 身份证号, 支持1/2代(15位/18位数字)

      /(^\\d{8}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}$)|(^\\d{6}(18|19|20)\\d{2}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}(\\d|X|x)$)/
      
    • 身份证

      /^[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]$/
      
  • 时间

    • 检查HH:mm

      /^(?:[01]\\d|2[0-3])(?::[0-5]\\d)$/;
      
    • HH:mm:ss

      /^(?:[01]\\d|2[0-3])(?::[0-5]\\d){2}$/;
      
    • 24小时制时间(HH:mm:ss)

      /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/
      
    • 12小时制时间(hh:mm:ss)

      /^(?:1[0-2]|0?[1-9]):[0-5]\\d:[0-5]\\d$/
      
  • 日期

    /^\\d{4}(-)(1[0-2]|0?\\d)\\1([0-2]\\d|\\d|30|31)$/
    
    • YYYY-MM-DD

      /^\\d{4}(\\-)\\d{1,2}\\1\\d{1,2}$/
      
    • YYYY-MM-DD hh:mm:ss

      /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/
      
  • 邮箱地址(email)

    • 邮箱

      /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]{2,4})$/
      
      /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
      
  • 网址

    /^((https?|ftp|file):\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/
    
    /^(?:(?:https?|ftp):\\/\\/)?(?:[\\da-z.-]+)\\.(?:[a-z.]{2,6})(?:\\/\\w\\.-]*)*\\/?/
    
  • 文件扩展名

    function checkFileName (arr) {
      arr = arr.map(name => `.${name}`).join('|')
      return new RegExp(`(${arr})$`)
    }
    
    const filenameReg = checkFileName(['jpg', 'png', 'txt'])
    
  • 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]?)$/
    
  • ip-v6

    /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i
    
  • 16进制颜色

    /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
    
  • 国内座机电话,如: 0341-86091234

    /\\d{3}-\\d{8}|\\d{4}-\\d{7}/
    
  • 护照(包含香港、澳门)

    /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/
    
  • 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合

    /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/
    
  • 数字/货币金额(支持负数、千分位分隔符)

    /(?:^[-]?[1-9]\\d{0,2}(?:$|(?:,\\d{3})*(?:$|(\\.\\d{1,2}$))))|(?:(?:^[0](\\.\\d{1,2})?)|(?:^[-][0]\\.\\d{1,2}))$/
    
  • 数字/货币金额 (只支持正数、不支持校验千分位分隔符)

    /(?:^[1-9]([0-9]+)?(?:\\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\\.[0-9](?:[0-9])?$)/
    
  • 银行卡号(10到30位, 覆盖对公/私账户, 参考微信支付)

    /^[1-9]\\d{9,29}$/
    
  • 版本号格式必须为X.Y.Z

    /^\\d+(?:\\.\\d+){2}$/
    
  • 中文姓名

    /^(?:[\\u4e00-\\u9fa5·]{2,16})$/
    
  • 英文姓名

    /(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)/
    
  • 新能源车牌号

    /[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))$/
    
  • 非新能源车牌号

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/
    
  • 车牌号(新能源+非新能源)

    /^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(?:(?:[0-9]{5}[DF])|(?:[DF](?:[A-HJ-NP-Z0-9])[0-9]{4})))|(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})$/
    
  • md5格式(32位)

    /^[a-f0-9]{32}$/
    
  • 迅雷链接

    /^thunder:\\/\\/[a-zA-Z0-9]+=$/
    
  • ed2k链接(宽松匹配)

    /^thunder:\\/\\/[a-zA-Z0-9]+=$/
    
  • 磁力链接(宽松匹配)

    /^magnet:\\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/
    
  • 子网掩码

    /^(?:\\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])){3}$/
    
  • linux"文件夹”路径

    /^\\/(\\w+\\/?)+$/
    
  • linux"文件”路径

    /^\\/(\\w+\\/)+\\w+\\.\\w+$/
    
  • window下"文件夹”路径

    /^[a-zA-Z]:\\\\(?:\\w+\\\\?)*$/
    
  • window下"文件”路径

    /^[a-zA-Z]:\\\\(?:\\w+\\\\)*\\w+\\.\\w+$/
    
  • A股代码

    /^(s[hz]|S[HZ])(000[\\d]{3}|002[\\d]{3}|300[\\d]{3}|600[\\d]{3}|60[\\d]{4})$/
    

猜你喜欢

转载自blog.csdn.net/SeriousLose/article/details/126601926