常用 js 正则表达式

后续中有遇到其他常用的js正则会持续更新~~~

获取带有单位字符串前的数字

let fn = (val='')=>{
    return (val.match(/\d+(\.)?\d+/) || [])[0]
}
fn('50.22MB') // '50.22'
fn('50px') // '50'
fn('abc123.45abc') // '123.45'

// tip:parseInt() 或 parseFloat() 函数也可以达到相同效果(注意不是数字开头的字符串将得到 NaN)
parseFloat('50.33px') // 50.33
parseInt('50.33px') // 50
parseFloat('abc123.45abc') // NaN

验证是否是身份证号码

  /**
   *  验证是否是身份证号码
   * @param card 身份证号码
   * @return {boolean} true: 是 false:否
   */
  function isCardNo(card) {
    if(!card) return false
    // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return reg.test(card)
  }

tip: 根据身份证号码解析出生年月

    /**
     * 根据身份证号码解析出生年月
     * @param idCard 身份证号码
     * @param format 返回类型 yyyy-MM-dd
     * @return {string|null}
     */
    function getBirthDateByIDNo(idCard, format="yyyy-MM-dd") {
      if(!isCardNo(idCard)) return null
      let pattern = /^(\d{6})(\d{4})(\d{2})(\d{2})/;
      let match = pattern.exec(idCard);
      if (match) {
        let year = match[2];
        let month = match[3];
        let day = match[4];
        // 解析 format
        let formatReg = format.replace('yyyy','$1').replace('MM','$2').replace('dd','$3')
        // return `${year}${month}${day}`.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3')
        return `${year}${month}${day}`.replace(/^(\d{4})(\d{2})(\d{2})$/, formatReg)
      }
      return null;
    }

验证是否是邮箱

function isEmail(val) {
    let reg = /^([0-9A-Za-z\-_.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g
    // ^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$"
    return reg.test(val)
  }

验证是否是手机号码

function isPhone(val){
    return /^1[3|4|5|7|8|9]\d{9}$/.test(val)
}

使用捕获分组去掉字符串中的重复部分(\组号 $组号)

let a = '我要学学学编编编编编程程程程程程程'
a.replace(/(.)\1+/g, '$1') // 我要学编程

去除可能存在多个//的情况,常用于url路径的拼接

'abc//sss//dasd'.replace(/(\/)+/g, '$1')
// log 'abc/sss/dasd'

若对你有帮助,请点个赞吧,若能打赏不胜感激,谢谢支持!
本文地址:https://www.jianshu.com/p/bd22414e65b7?v=1730252342016,转载请注明出处,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。