首页 > 其他分享 >uni app 的ui插件uview里自带的一些正则表达式

uni app 的ui插件uview里自带的一些正则表达式

时间:2023-11-06 11:45:31浏览次数:38  
标签:function 插件 return 9a app uview zA value test

uni app 的ui插件uview里自带的一些正则表达式

取自"uni_modules\uview-ui\libs\function\test.js"

 

 

/**
 * 验证电子邮箱格式
 */
function email(value) {
    return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value)
}

/**
 * 验证手机格式
 */
function mobile(value) {
    return /^1[23456789]\d{9}$/.test(value)
}

/**
 * 验证URL格式
 */
function url(value) {
    return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/
        .test(value)
}

/**
 * 验证日期格式
 */
function date(value) {
    if (!value) return false
    // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳
    if (number(value)) value = +value
    return !/Invalid|NaN/.test(new Date(value).toString())
}

/**
 * 验证ISO类型的日期格式
 */
function dateISO(value) {
    return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
}

/**
 * 验证十进制数字
 */
function number(value) {
    return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value)
}

/**
 * 验证字符串
 */
function string(value) {
    return typeof value === 'string'
}

/**
 * 验证整数
 */
function digits(value) {
    return /^\d+$/.test(value)
}

/**
 * 验证身份证号码
 */
function idCard(value) {
    return /^[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|x)$/.test(
        value
    )
}

/**
 * 是否车牌号
 */
function carNo(value) {
    // 新能源车牌
    const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/
    // 旧车牌
    const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/
    if (value.length === 7) {
        return creg.test(value)
    } if (value.length === 8) {
        return xreg.test(value)
    }
    return false
}

/**
 * 金额,只允许2位小数
 */
function amount(value) {
    // 金额,只允许保留两位小数
    return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value)
}

/**
 * 中文
 */
function chinese(value) {
    const reg = /^[\u4e00-\u9fa5]+$/gi
    return reg.test(value)
}

/**
 * 只能输入字母
 */
function letter(value) {
    return /^[a-zA-Z]*$/.test(value)
}

/**
 * 只能是字母或者数字
 */
function enOrNum(value) {
    // 英文或者数字
    const reg = /^[0-9a-zA-Z]*$/g
    return reg.test(value)
}

/**
 * 验证是否包含某个值
 */
function contains(value, param) {
    return value.indexOf(param) >= 0
}

/**
 * 验证一个值范围[min, max]
 */
function range(value, param) {
    return value >= param[0] && value <= param[1]
}

/**
 * 验证一个长度范围[min, max]
 */
function rangeLength(value, param) {
    return value.length >= param[0] && value.length <= param[1]
}

/**
 * 是否固定电话
 */
function landline(value) {
    const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
    return reg.test(value)
}

/**
 * 判断是否为空
 */
function empty(value) {
    switch (typeof value) {
    case 'undefined':
        return true
    case 'string':
        if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true
        break
    case 'boolean':
        if (!value) return true
        break
    case 'number':
        if (value === 0 || isNaN(value)) return true
        break
    case 'object':
        if (value === null || value.length === 0) return true
        for (const i in value) {
            return false
        }
        return true
    }
    return false
}

/**
 * 是否json字符串
 */
function jsonString(value) {
    if (typeof value === 'string') {
        try {
            const obj = JSON.parse(value)
            if (typeof obj === 'object' && obj) {
                return true
            }
            return false
        } catch (e) {
            return false
        }
    }
    return false
}

/**
 * 是否数组
 */
function array(value) {
    if (typeof Array.isArray === 'function') {
        return Array.isArray(value)
    }
    return Object.prototype.toString.call(value) === '[object Array]'
}

/**
 * 是否对象
 */
function object(value) {
    return Object.prototype.toString.call(value) === '[object Object]'
}

/**
 * 是否短信验证码
 */
function code(value, len = 6) {
    return new RegExp(`^\\d{${len}}$`).test(value)
}

/**
 * 是否函数方法
 * @param {Object} value
 */
function func(value) {
    return typeof value === 'function'
}

/**
 * 是否promise对象
 * @param {Object} value
 */
function promise(value) {
    return object(value) && func(value.then) && func(value.catch)
}

/** 是否图片格式
 * @param {Object} value
 */
function image(value) {
    const newValue = value.split('?')[0]
    const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i
    return IMAGE_REGEXP.test(newValue)
}

/**
 * 是否视频格式
 * @param {Object} value
 */
function video(value) {
    const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i
    return VIDEO_REGEXP.test(value)
}

/**
 * 是否为正则对象
 * @param {Object}
 * @return {Boolean}
 */
function regExp(o) {
    return o && Object.prototype.toString.call(o) === '[object RegExp]'
}

export default {
    email,
    mobile,
    url,
    date,
    dateISO,
    number,
    digits,
    idCard,
    carNo,
    amount,
    chinese,
    letter,
    enOrNum,
    contains,
    range,
    rangeLength,
    empty,
    isEmpty: empty,
    jsonString,
    landline,
    object,
    array,
    code,
    func,
    promise,
    video,
    image,
    regExp,
    string
}

 

标签:function,插件,return,9a,app,uview,zA,value,test
From: https://www.cnblogs.com/niunan/p/17812300.html

相关文章

  • Burp Suite插件开发 更新UI组件
    Issuenote操作SwingGUI组件时,遇到一个问题,比如在前端设置了一个表格,表格里面的数据是后台动态生成的,发现却更新不了。我尝试猜测问题的原因:我把表格嵌套在一个面板B,面板B又嵌套在面板A,所以需要刷新面板A才行,也不全对;线程问题,需要在一个特定的UI子线程才能更新,也不全对;后......
  • tinymce的imgtools插件的使用
    使用TinyMCE的imgtools插件可以实现在编辑器中旋转和翻转图片,以及编辑图片等操作。具体使用方法如下:安装TinyMCE和imgtools插件。可以通过npm安装TinyMCE和imgtools插件,然后在编辑器中引入相关依赖。配置工具条按钮。通过添加工具条按钮,可以实现在编辑器中旋转和翻转图片,以及编辑图......
  • tinymce的imgtools插件的使用
    使用TinyMCE的imgtools插件可以实现在编辑器中旋转和翻转图片,以及编辑图片等操作。具体使用方法如下:安装TinyMCE和imgtools插件。可以通过npm安装TinyMCE和imgtools插件,然后在编辑器中引入相关依赖。配置工具条按钮。通过添加工具条按钮,可以实现在编辑器中旋转和翻转图片,以及编辑图......
  • es - 安装Head/Kibana插件
    1.7安装Head插件Head是elasticsearch的集群管理工具,可以用于数据的浏览和查询(1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们要使用它,必须先安装git,通过git获取elasticsearch-head(2)运行elasticsearch-head会用到grunt,而grunt需要npm包管理器,所以nodejs是必......
  • 大总结:uboot复习--Apple的学习笔记
    一,前言发现现在的uboot做的越来像linux驱动了,包括了设备树及其驱动模型。所以若复习设备树的话,在linux上学习和在uboot上学习是一样的,再加上我学习过了qemu仿真,所以想找到单步仿真调试方法。主要是am335x的调试器当时我焊接失败,所以只考虑仿真,另外发现stm32F407也有uboot支持,所以研......
  • 开发板nfs挂载桥接虚拟机的文件系统环境搭建--Apple的学习笔记
    一,前言我之前虚拟机配置的是NAT方式,不是桥接,然后Kernel及uboot都同nfs挂载。所以先改成了最简单的桥接方式的虚拟机。二,ubuntu虚拟机设置1,vmware先设置为桥接。2,设置ubuntu14.04的静态ip地址gedit/etc/network/interfaces内容autoeth0ifaceeth0inetstaticaddress192.168.7.......
  • 开发板nfs挂载NAT虚拟机的文件系统环境搭建--Apple的学习笔记
    一,前言总体来说我还是想用NAT虚拟机,所以基于开发板nfs挂载桥接虚拟机的文件系统环境搭建--Apple的学习笔记中的配置继续修改。二,ubuntu虚拟机中nfs挂载设置修改ip地址为192.168.112.11添加路由端口sudogedit/etc/services最后添加mountd9999/tcpmountd9999/udpPC以太网2设......
  • uniapp-1记
    《Vue.js核心技术解析与uni-app跨平台实战开发》这本书听、读了2天,收获一般,所以我打算从兴趣点入手。上面截取了某游戏社交平台的应用操作界面,可以看到它使用的双导航,即在上方有一排:(推荐、影帝赠礼、新闻、更新、活动),默认推荐,而其实这上面这一排也仅仅对应着下面的tabBar......
  • 下载了powerpaste插件报错
    为什么我下载了powerpaste插件代码中写external_plugins:{powerpaste:"/static/tinymce/powerpaste/plugin.min.js"}然后就会报错tinymce.js:4759GEThttp://localhost:81/static/tinymce/powerpaste/plugin.min.jsnet::ERR_ABORTED404(NotFound)你遇到的问题可能......
  • uniApp 仿微信下拉菜单
    uniApp仿微信下拉菜单手指长按事件longpress@longpress="longpress(index,$event)"下拉菜单 <!--长按的下拉菜单--> <viewclass="jh-w-200jh-h-60-minjh-dropDownMenujh-shadow-greyjh-bg-whitejh-solid" :id="'dropDownMenu&#......