vue 手机格式验证

1.手机格式验证

1-1.封装 userPhone.js

function notString(value) {
  return !value || typeof value !== 'string'
}

export function cellphoneValidator(_, value, callback) {
  // 如果不是字符串,不验证
  if (notString(value)) {
    callback()
    return
  }

  const cellphone = value.trim()
  if (/^[1]([3-9])[0-9]{9}$/.test(cellphone)) {
    callback()
  } else {
    callback(new Error('请输入正确的手机号'))
  }
}

1-2.使用

<el-form :rules="rules" ref="ruleFrom" :model="ruleFrom">  
   <el-form-item label="手机号" prop="cellphone">
       <el-input v-model.trim="ruleFrom.cellphone" placeholder="请输入" /> 
   </el-form-item> 
</el-form>
import { cellphoneValidator } from '@/utils/userPhone';


  data() {
    return { 
      rules: {
        ruleFrom: {
          cellphone: "",
        },
        cellphone: [{ validator: cellphoneValidator, trigger: 'blur' }], 
      }, 
    };
  },

2.境外号码验证

2-1.封装 userPhone.js

function notString(value) {
  return !value || typeof value !== 'string'
}

export function phoneValidator(_, value, callback) {
  // 如果不是字符串,不验证
  if (notString(value)) {
    callback()
    return
  }
  const phone = value.trim()

  //数字和横线 && 不能为手机
  if (/^[0-9-]{0,}$/.test(phone) && !(/^1\d{10}$/.test(phone))) {
    callback()
  } else {
    callback(new Error('请输入正确号码'))
  }
}

2-2.使用

<el-form :rules="rules" ref="ruleFrom" :model="ruleFrom">  
    <el-form-item label="境外号码"  prop="phone">
        <el-input v-model.trim="ruleFrom.phone" placeholder="请输入" />
    </el-form-item>
</el-form>
import { phoneValidator} from '@/utils/userPhone';


  data() {
    return { 
      rules: {
        ruleFrom: {
           phone: "",
        },
        phone: [{ validator: phoneValidator, trigger: 'blur' }], 
      }, 
    };
  },

### 如何在 Vue 中使用正则表达式进行手机号验证 #### 使用 v-model 和自定义方法实现简单验证 为了确保输入框中的内容是一个有效的中国手机号,可以在组件内创建一个用于检测手机号合法性的函数,并将其绑定到 `v-on` 事件上。当用户尝试提交数据时触发此功能。 ```javascript methods: { validateMobile(mobileNumber) { const mobileRegex = /^1[3456789]\d{9}$/; if (!mobileRegex.test(mobileNumber)) { // 如果不符合规则,则返回false并给出提示 alert('请输入正确的手机号'); return false; } return true; } } ``` 在此代码片段中,定义了一个名为 `validateMobile` 的方法,它接收一个参数作为待检验的字符串。该逻辑利用了正则表达式 `/^1[3456789]\d{9}$/` 来匹配中国大陆地区的移动电话号码格式[^1]。 #### 结合 el-form 实现更复杂的表单校验 对于更加复杂的应用场景,推荐采用 Element UI 或其他类似的前端框架所提供的 `<el-form>` 组件来进行完整的表单管理。这允许开发者轻松地为各个字段指定详细的验证条件,而无需手动编写大量的 DOM 操作代码。 ```html <template> <div class="form-container"> <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleFormRef"> <!-- ... --> <el-form-item label="Phone Number" prop="phoneNumber"> <el-input type="text" v-model.number="ruleForm.phoneNumber"></el-input> </el-form-item> <!-- ... --> </el-form> </div> </template> <script setup lang="ts"> import { reactive, ref } from 'vue'; const ruleFormRef = ref(null); let ruleForm = reactive({ phoneNumber: '' }); // 定义验证规则 var checkPhoneNumber = (rule, value, callback) => { let regExp = /^1[3456789]\d{9}$/; setTimeout(() => { if (!value || !regExp.test(value)) { callback(new Error('Please enter the correct phone number')); } else { callback(); } }, 1000); }; export default defineComponent({ data() { var rules = { phoneNumber: [ { validator: checkPhoneNumber, trigger: ['blur', 'change'] }, ] }; return { rules, ... }; } }); </script> ``` 上述例子展示了如何配置带有内置验证机制的表单项。每当用户的焦点离开输入区域(`blur`)或是改变了输入的内容(`change`)之后都会自动调用相应的回调函数去执行特定的检查操作[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值