0
点赞
收藏
分享

微信扫一扫

表单校验正则集合

王远洋 2022-03-11 阅读 51

文件:regular.js

export default {
    // 验证自然数
    naturalNum: {
        pattern: /^(([0-9]*[1-9][0-9]*)|(0+))$/,
        message: '请输入自然数'
    },
    // 正整数
    positiveNum: {
        pattern: /^[1-9]+\d*$/,
        message: '请输入正整数'
    },
    // 保留两位小数
    twoDecimal: {
        pattern: /^(([1-9]{1}\d*)|(0{1}))(\.\d{0,2})?$/,
        message: '小数点保留最多两位'
    },
    email: {
        pattern: /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
        message: '请输入正确的邮箱地址'
    },
    // 手机号
    phone: {
        pattern: /^1\d{10}$/,
        message: '请输入正确的手机号码'
    },
    // 座机
    telephone: {
        pattern: /^\\d{3}-\\d{7,8}|\\d{4}-\\d{7,8}$/,
        message: '请输入正确的座机号'
    },
    // 微信号
    weChat: {
        pattern: /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/,
        message: '请输入正确的微信号码'
    },
    // QQ号码
    qq: {
        pattern: /^[1-9]\d{4,11}$/,
        message: '请输入正确的QQ号码'
    },
    // 英文
    english: {
        pattern: /^.[A-Za-z]+$/,
        message: '请输入英文字符'
    },
    // 银行卡号码
    bankCard: {
        pattern: /^[1-9]\\d{9,19}$/,
        message: '请输入正确的银行卡号码'
    },
    // 证件号码
    IDNumber: {
        pattern: /^[a-z0-9A-Z]{0,50}$/,
        message: '请输入正确的证件号码'
    },
    // 身份证号码,包括15位和18位的
    IDCard: {
        pattern: /(^[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]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/,
        message: '请输入正确的身份证号码'
    },
    // url
    url: {
        pattern: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
        message: '请输入以http和https开头的网址'
    },
    noHttp: {
        pattern: /[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
        message: '请不要输入http和https开头的网址'
    },
    noUrl: {
        pattern: /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/,
        message: '请输入正确的连接地址'
    },
    // 0到20位的英文字符和数字
    enNum0to20: {
        pattern: /^[a-z0-9A-Z]{0,20}$/,
        message: '请输入20位以内的英文字符和数字'
    },
    // 8到20位的英文字符和数字
    enNum8to20: {
        pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/,
        message: '请输入8-20位以内的英文字符和数字'
    },
    // 2到100位的中英文字符和空格
    cnEnSpace2to100: {
        pattern: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/,
        message: '请输入2到100位的中英文字符和空格'
    },
    // 数字和换行符
    numLinefeed: {
        pattern: /^[0-9\n*]+$/,
        message: '请输入数字和换行符'
    },
    // 255位以内的字符
    char0to255: {
        pattern: /^.{0,255}$/,
        message: '请输入255位以内的字符'
    },
    // 四个字符
    char0to4: {
        pattern: /^.{0,4}$/,
        message: '最多四位数或四个汉字'
    },
    // 2-20位 字母、中文 字符
    enCh2to20: {
        pattern: /^[a-zA-Z\u4e00-\u9fa5]{2,20}$/,
        message: '组织名由2-20位字母、中文字符组成'
    },
    // 特殊字符
    specialChar: {
        pattern: /^[^`~!@#$^&*()=|{}':;',/\\[\].<>?]*$/,
        message: '请删除特殊字符'
    },
    // 数字验证码
    codeNumber: {
        pattern: /^[0-9]{6}$/,
        message: '请输入正确的编码'
    }
}

使用:

  1. 引入:import regular from ‘@/utils/regular’
  2. 使用:表单校验
			loginRules: {
                account: [
                    {
                        required: true,
                        trigger: 'blur',
                        validator: validateUsername
                    }
                ],
                password: [
                    {
                        required: true,
                        trigger: 'blur',
                        message: '请输入登录密码'
                    }
                ],
                code: [
                    {
                        required: true,
                        trigger: 'change',
                        pattern: regular.codeNumber.pattern,
                        message: regular.codeNumber.message
                    }
                ],
                verifyCode: [
                    {
                        required: true,
                        trigger: 'blur',
                        message: '请输入验证码'
                    }
                ]
            },
	  const validateUsername = (rule, value, callback) => {
            if (!value) {
                callback(new Error('请输入手机号'))
            } else {
                if (!regular.phone.pattern.test(value)) {
                    callback(new Error(regular.phone.message))
                } else {
                    callback()
                }
            }
        }
  1. 使用校验规则:prop属性
			   <el-form
                    ref="loginForm"
                    :model="loginForm"
                    :rules="loginRules"
                    class="login-form"
                    auto-complete="on"
                    label-position="left"
                    v-show="titleIndex === 0"
                >
				   <el-form-item prop="account" class="bor-1-px">
                        <el-input
                            ref="account"
                            v-model="loginForm.account"
                            :disabled="accountDisable"
                            name="account"
                            type="text"
                            tabindex="1"
                            @keyup.enter.native="handleLogin"
                        />
                    </el-form-item>
    			</el-form>

注意:

  1. 要有表单数据对象model :model="loginForm"
  2. 表单验证规则 :rules="loginRules"
  3. prop="account" v-model="loginForm.account" 名称account要一致
举报

相关推荐

0 条评论