1. 程式人生 > >Vue 的身份證 手機號碼 電話號碼 郵箱等校驗

Vue 的身份證 手機號碼 電話號碼 郵箱等校驗

一、基本身份證 手機號碼等基本檢驗方式

/**
 * @desc 基於ElementUI Form rules 進行使用, 參考官方文件: http://element-cn.eleme.io/#/zh-CN/component/form [自定義校驗規則]
 * @example  rules: {
 *  ip: [
 *    {required: true, message: '請輸入矩陣IP', trigger: 'blur'},
 *    {validator: this.$rules.ipAddress, trigger: 'blur'}
 *  ]
 * }
 *

 */
export const validater = {

  /**
   * 校驗 包括中文字、英文字母、數字和下劃線
   * 登入賬號校驗
   */
  validateAccount(rule, value, callback) {
    let acount = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/
    if (value && (!(acount).test(value))) {
      callback(new Error('賬號不符合規範'))
    } else {
      callback()
    }
  },

  /**
   * IP地址校驗
   */
  ipAddress(rule, value, callback) {
	if(value && "..." === value){
		callback(new Error('請輸入IP地址'))
	}if (value && !(/((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/).test(value)) {
      callback(new Error('IP地址不符合規範'))
    } else {
      callback()
    }
  },

  /**
   * 手機號碼校驗
   */
  phoneNumber(rule, value, callback) {
    if (value && (!(/^[1][34578]\d{9}$/).test(value) || !(/^[1-9]\d*$/).test(value) || value.length !== 11)) {
      callback(new Error('手機號碼不符合規範'))
    } else {
      callback()
    }
  },

  /**
   * 電話號碼校驗
   */
  telephoneNumber(rule, value, callback) {
    if (value && (!(/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/).test(value))) {
      callback(new Error('電話號碼不符合規範'))
    } else {
      callback()
    }
  },

  /**
   * 郵箱校驗
   */
  emailValue(rule, value, callback) {
    let temp = /^[\w.\-]
[email protected]
(?:[a-z0-9]+(?:-[a-z0-9]+)*\.)+[a-z]{2,3}$/ let tempOne = /^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$/ if (value && (!(temp).test(value))) { callback(new Error('郵箱格式不符合規範')) } else { callback() } }, /** * 身份證號碼校驗 */ idCard(rule, value, callback) { if (value && (!(/\d{17}[\d|x]|\d{15}/).test(value) || (value.length !== 15 && value.length !== 18))) { callback(new Error('身份證號碼不符合規範')) } else { callback() } }, /** * 正整數校驗 */ integerP(rule, value, callback) { if (value && !(/^[1-9]\d*$/).test(value)) { callback(new Error('只能填寫正整數')) } else { callback() } }, /** * 負整數校驗 */ integerN(rule, value, callback) { if (value && !(/^-[1-9]\d*$/).test(value)) { callback(new Error('只能填寫負整數')) } else { callback() } }, /** * 英文字元校驗 */ enText(rule, value, callback) { // let a = '', // arr = value.split(" ") // for (let i = 0; i < arr.length; i++) { //刪除行內空格 // a += arr[i]; // } if (value && !(/^[A-Za-z]+$/).test(value)) { callback(new Error('只能填寫英文字元')) } else { callback() } }, /** * 中文字元英文字元校驗 */ ChEnText(rule, value, callback) { if (value && !(/^[A-Za-z0-9]+$/).test(value)) { callback(new Error('只能填寫數字和英文字元')) } else { callback() } }, /** * 中文字元校驗 */ cnText(rule, value, callback) { // let a = '', // arr = value.split(" ") // for (let i = 0; i < arr.length; i++) { //刪除行內空格 // a += arr[i]; // } if (value && (/[^\u4e00-\u9fa5]/).test(value)) { callback(new Error('只能填寫中文字元')) } else { callback() } }, /** * 只能輸入英文或者數字 */ enOrnunText (rule, value, callback) { if (value && !(/^[A-Za-z0-9]+$/).test(value)) { callback(new Error('只能填寫英文或者數字')) } else { callback() } }, /** * 20位數字國標編碼校驗,且為正整數 */ validateDeviceNo (rule, value, callback) { if (value && !(/^[1-9]\d*$/).test(value)) { callback(new Error('只能填寫正整數')) } else { if (!/^[0-9]{20}$/.test(value)) { callback(new Error('請輸入20位數字的編碼!')); } else { callback(); } } }, /** *校驗電腦Mac地址 *以xx-xx-xx-xx-xx-xx的形式輸入(xx為16進位制數字) */ validateMac (rule, value, callback) { let temp = /[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}/; if (!temp.test(value)) { callback(new Error('請輸入xx-xx-xx-xx-xx-xx形式的MAC地址!')); } else{ callback(); } }, /** * 校驗地址程式碼或者分組程式碼 */ validateCode (rule, value, callback) { let num = /^[1-9]\d*$/ if (value && !(num).test(value)) { callback(new Error('只能填寫正整數')) } else { let codeLen = value.toString().length console.log(codeLen) if(codeLen > 0 && codeLen % 3 !== 0){ callback(new Error('輸入的長度必須是3的倍數')) }else if(codeLen>18){ callback(new Error('輸入的長度不能超過18位,請重新輸入')) } else { callback() } } }, /** * 校驗字元長度 */ validateLength (rule, value, callback) { let codeLen = value.toString().length if(codeLen>18){ callback(new Error('輸入的長度不能超過20位,請重新輸入')) } }, /** * 數字 ,兩位 */ validateTwoNum (rule, value, callback) { let temp = /^[1-9]{2}$/; if (!temp.test(value)) { callback(new Error('請輸入兩位正整數!')); } else{ callback(); } }, /** * 校驗經度是否符合規範 * */ checkLongitude(rule, value, callback) { let longrg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/; if(!longrg.test(value)){ callback(new Error('經度整數部分為0-180,小數部分為0到6位!')); } else { callback(); } }, /** * 校驗緯度是否符合規範 * */ checkLatitude(rule, value, callback) { var latreg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/; if(!latreg.test(value)){ callback(new Error('緯度整數部分為0-90,小數部分為0到6位!')); } else { callback(); } } }

二、詳細的身份校驗方式

/*比較詳細的身份證校驗*/
Vue.prototype.isIdCard = (idCard) =>{
  let regIdCard=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
  if(regIdCard.test(idCard)){
    if(idCard.length === 18){
      let idCardWi = new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 );
      let idCardY = new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 );
      let idCardWiSum = 0
      for(let i=0;i<17;i++){
        idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];
      }
      let idCardMod=idCardWiSum%11
      let idCardLast=idCard.substring(17)
      if(idCardMod === 2){
        if(idCardLast === "X"||idCardLast === "x"){
          return true;
        }else{
          Vue.prototype.$message.warning('身份證號碼錯誤!,請重新輸入')
          return false;
        }
      }else{
        if(idCardLast === idCardY[idCardMod]){
          return true;
        }else{
          Vue.prototype.$message.warning('身份證號碼錯誤!,請重新輸入')
          return false;
        }
      }
    }
  }else{
    Vue.prototype.$message.warning('身份證格式不正確!,請重新輸入')
    return false
  }
}

三 、使用方式

/*使用方式*/
rules: {
  mobilePhone: [
    {required: true, message: '請輸入電話號碼', trigger: 'blur'},
    {validator: this.$rules.phoneNumber, trigger: 'blur'}
  ],
    cardId: [
    {required: true, message: '請輸入電話號碼', trigger: 'blur'},
    {validator: this.$rules.idCard, trigger: 'blur'}
  ]
},

簡單的部落格描述只是記錄自己的點點滴滴,若有不當的地方,歡迎指教,謝謝。

相關推薦

Vue身份證 手機號碼 電話號碼 郵箱

一、基本身份證 手機號碼等基本檢驗方式 /** * @desc 基於ElementUI Form rules 進行使用, 參考官方文件: http://element-cn.eleme.io/#/zh-CN/component/form [自定義校驗規則] * @e

java身份證號碼郵箱手機號碼/電話號碼

i++ start exceptio span cas table mail pub sys import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.

JS 對輸入的姓名 手機號碼 郵箱

大寫字母 中間 一個 layer one 大小 hone add 開頭 這個方法你可以自己寫來直接用 也可以封裝到一個方法中 name=$(‘#nameAdd .tianjia_name‘).val(); function isCorrectname(name){   re

js如何獲取android手機電話號碼和聯絡人,並且傳遞給PHP、Java後臺

一、使用cordova代替android和iso、xcode的開發和打包          這裡先說說個人站在web的角度對cordova的一些理解:對於獲取手機的一些原生資訊,如呼叫攝像頭、獲取聯絡人,共享地理位置等,我的第一反應就是肯定要用原生的語言去做,如果js指令碼

蘋果手機電話號碼顯示為撥號超連結

最近工作當中,手機應用內嵌HTML5頁面,遇到一個問題,聯絡人的的電話號碼顯示在網頁上,安卓是 正常的,但是在ios中會出現如下現象: 頁面開啟,電話號碼顯示正常,但是在我的專案中,等那麼兩秒鐘,手機號碼會消失。利用chrome瀏覽器進行

jQuery正則:電話身份證郵箱簡單

toast title 常用 輸入數據 存在 pan test mail col if (!(/^1[3,5,6,7,8,9]\d{9}$/).test(e.detail.value.data_phone)) { wx.showToast({

身份證號碼 出生年月 以及有效位 正則表示式判斷

/** * 身份證號碼格式校驗 */ function isIdCardNo (str) { // 身份證號碼正則表示式 var rpIdcard = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; var l

Vue使用Element庫form表單提交心得

Element是非常好用的前端PCui庫,但是有些樣式與產品給的需求有差別,這裡分享一下form表單校驗的心得。 Form 元件提供了表單驗證的功能,只需要通過 rules 屬性傳入約定的驗證規則,並將 Form-Item 的 prop 屬性設定為需校驗的欄位名即可。

郵箱合法性(中軟國際機試)

題目描述     輸入一個電子郵箱地址字串,要求檢查這個郵箱地址是否合法。如果輸入的電子郵箱地址是合法的,輸出字串1,否則輸出字串0。     滿足如下條件被認為是合法的郵箱地址:     1、僅包含一個'@'字元     2、最後三個字元必須是'.com'     3、字

java郵箱格式

@gmail.com @yahoo.com @msn.com @hotmail.com @aol.com @ask.com @live.com @qq.com @0355.net @163.com @163.net @263.net @3721.net @yeah.net @goo

三種檢視檔案MD5 SHA*值的方法

1、windows cmd命令(推薦) 方便,大小檔案都適合。注意路徑是相對於cmd所在目錄的相對路徑。 certutil -hashfile .\Fiddler.zip certutil -hashfile .\Fiddler.zip SHA1 c

email郵箱格式

js校驗: var email= $('#email').val(); var email_reg=/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/; if(!email_reg.test(email)){ alert(

正則表達式匹配身份證 電話號碼 郵箱 住宅電話 郵編

ext 大寫字母 nsh 辦理 regexp nbsp 新的 pat 中文 # -*- coding: utf-8 -*- import re tt1 = "13143567781" tt2=‘[email protected]‘ tt3=‘4110241945111

文字的工具類--中文,電話號碼郵箱身份證資訊的

這是專案中常用的文字校驗的工具類,包括:中文,電話號碼,郵箱,身份證等資訊的校驗 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor

判斷郵箱手機號碼身份證,使用者名稱,暱稱輸入格式是否正確的 正則表示式

//郵箱 + (BOOL) validateEmail:(NSString *)email {     NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A

JS正則方法判斷郵箱號碼手機號碼電話號碼

第一種方法: var mobval=$('#mobile').val(); mobval=mobval.replace(/[ ]/g,""); //去掉所有空格 var isMob = /^

iOS webView textView禁止識別 電話號碼.郵箱

<iframe id="iframeu2197232_0" src="http://pos.baidu.com/dcgm?rdid=2197232&amp;dc=2&amp;di=u2197232&amp;dri=0&amp;dis=0&amp;dai=2&

正則表示式身份證、日期、電話號碼

正則表示式 **身份證驗證: 方式一:只能判斷18位身份證:但是方法優於方法二** + (BOOL)checkIdentityCardNo:(NSString*)cardNo { if (

手機號碼、電子郵箱身份證、銀行卡正則驗證

手機號碼:var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; 電子郵箱:/^[a-z0-9]+([._\-][a-z0-9])@([a-z0-9]+[-a-z0-9]*[a-z0

js手機號碼電話號碼驗證

phone mob == reg 註意 () func var 而不是 function checkNum(){ var mobileReg = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/i; var phoneRe