常用正则表达式

281 阅读1分钟

总结项目中常用的正则表达式

  • 身份证号码

    /**
     * @param {*} e
     * @returns 校验身份证号
     */
    export function getIdentityValue(e) {
        let value = e.target.value;
        const reg = /^\d{6}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    
        if (!reg.test(value)) {
            value = value.replace(/[\u4e00-\u9fa5|,]+/, ''); // 过滤中文
            value = value.replace(/[^\d{18}$)|(^\d{17}(\d|X|x]/, '');
        }
        return value;
    }
    
  • 手机号码

    /**
     * @param {*} e
     * @returns 校验手机号码
     */
    export function getPhoneValue(e) {
        let value = e.target.value;
    
        if (!/^1[3-9][0-9]{9}$/.test(value)) {
            value = value.replace(/[^0-9]/g, '');
        }
        return value;
    }
    
  • 固定电话

    /**
     * @param {*} e
     * @returns 校验固定电话--大陆
     */
    export function getFixedTelephone(e) {
        let value = e.target.value;
    
        if (!/^0\d{2,3}-\d{7,8}$/.test(value)) {
            value = value.replace(/[^0-9-]/g, '');
        }
        return value;
    }
    
  • 替换掉非数字字符

    /**
     * @param {*} value
     * @returns 可以输入小数的数字输入框
     */
    export function checkNumberEvent(value) {
        value = value + ''; // String(value)
    
        if (!/^\d+(\.\d+)?$/.test(value)) {
            value = value.replace(/[^0-9.]/g, '');
        }
    
        return value ? parseFloat(value) : '';
    }
    
  • 替换掉汉字字符

    /**
     * @param {*} e
     * @returns 替换掉汉字字符
     */
    export function getNotCharacterValue(e) {
        let value = e.target.value;
    
        if (/[\u4e00-\u9fa5]+/.test(value)) {
            value = value.replace(/[\u4e00-\u9fa5|,]+/, '');
        }
        return value;
    }
    
  • 指定输入框转换数字(最多两位小数)

    /**
    * @return {*} value
    * @description 指定输入框转换数字(最多两位小数)
    */
    export function limitDecimals(value) {
        const reg = /^(\d+)\.(\d\d).*$/;
        
        let bef = '',
        _value = String(value);
    
        // 需要限制用户输入的整数最大位数
        <!--// 截取小数点前面正整数为7位-->
        <!--if (_value.indexOf('.') != -1) {-->
        <!--    const index = _value.indexOf('.');-->
        <!--    bef = _value.substring(0, index);-->
        <!--} else {-->
        <!--    bef = _value;-->
        <!--}-->
    
        <!--// 限制输入7位-->
        <!--if (bef && !/^(\d{1,7})$/.test(bef)) {-->
        <!--    value = bef.substring(0, 7);-->
        <!--}-->
        
        if(typeof value === 'string') {
            return !isNaN(Number(value)) ? value.replace(reg, '$1.$2') : '';
        } else if (typeof value === 'number') {
            return !isNaN(value) ? String(value).replace(reg, '$1.$2') : '';
        } else {
            return '';
        }
    }
    
  • 地址 URL 链接

    export function getUrl(url) {
        let reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
        
        return url && reg.test(url);
    }
    
  • 日期 YYYY-MM-DD

    export function getDate(v) {
        let reg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
        
        return reg.test(v);
    }