blog

ElementUIのフォーム検証でよく使われる正規表現

1.文書タイプによる選択的検証 HTML部分:2.携帯電話番号 3.小数を含む正の数...

Oct 29, 2020 · 3 min. read
シェア

文書の種類に応じた選択的検証

data() {
 // 身分証明書の検証
 const checkIDCard = (rule, value, callback) => {
 const IDCardReg = /^\d{6}()?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])||31)\d{3}(\d|X|x)$/
 if (value) {
 if (IDCardReg.test(value)) {
 callback()
 } else {
 callback(new Error('正しくないフォーマットのID番号'))
 }
 } else {
 callback(new Error('ID番号を入力する'))
 }
 }
 // 香港・マカオ許可証の検証
 const checkHKCard = (rule, value, callback) => {
 /**
 * ルール:H/M+ 10ビットまたは6桁
 * サンプル:H
 */
 const HKCardReg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/
 if (value) {
 if (HKCardReg.test(value)) {
 callback()
 } else {
 callback(new Error('香港およびマカオのパス番号の書式が正しくない'))
 }
 } else {
 callback(new Error('香港・マカオ旅行許可証番号を入力する'))
 }
 }
 // 台湾旅行許可証の検証
 const checkTWCard = (rule, value, callback) => {
 const TWCardReg1 = /^[0-9]{8}$/;
 const TWCardReg2 = /^[0-9]{10}$/;
 if (value) {
 if (TWCardReg1.test(value) || TWCardReg2.test(value)) {
 callback()
 } else {
 callback(new Error('台湾旅行許可証番号の書式が間違っている'))
 }
 } else {
 callback(new Error('台湾旅行許可証番号を入力する'))
 }
 }
 // パスポート認証
 const checkPassport = (rule, value, callback) => {
 const passportReg1 = /^[a-zA-Z]{5,17}$/;
 const passportReg2 = /^[a-zA-Z0-9]{5,17}$/;
 if (value) {
 if (passportReg1.test(value) || passportReg2.test(value)) {
 callback()
 } else {
 callback(new Error('パスポート番号の書式が正しくない'))
 }
 } else {
 callback(new Error('パスポート番号を入力する'))
 }
 }
 return{
 // ここに正数を入れると、その下のメソッドで正数を簡単に切り替えられる。
 checkIDCard: checkIDCard,
 checkHKCard: checkHKCard,
 checkTWCard: checkTWCard,
 checkPassport: checkPassport,
 }
}
methods: {
 // IDカード、香港・マカオのパスポート、台湾のパスポート、パスポートの検証。
 handleCardChange() {
 if (this.user.credentialType == 1) {
 this.rules.credentialNumber = [{ required: true, validator: this.checkIDCard, trigger: 'change' }]
 } else if (this.user.credentialType == 2) {
 this.rules.credentialNumber = [{ required: true, validator: this.checkHKCard, trigger: 'change' }]
 } else if (this.user.credentialType == 3) {
 this.rules.credentialNumber = [{ required: true, validator: this.checkTWCard, trigger: 'change' }]
 } else if (this.user.credentialType == 4) {
 this.rules.credentialNumber = [{ required: true, validator: this.checkPassport, trigger: 'change' }]
 } else {
 this.rules.credentialNumber = [{ required: true, message: '最初に文書の種類を選択する', trigger: 'change' }]
 }
 }
}

HTMLセクション:

<el-form-item label="文書タイプ:" prop="credentialType" label-width="85px" style="margin-left: -5px; margin-right: 15px">
 <!-- 変更イベントをバインドする>
 <el-select v-model="user.credentialType" class="ext_inp5" @change="handleCardChange">
 <el-option
 v-for="(dict,key) in credentialTypeOptions"
 :label="dict.dictLabel"
 :value="dict.dictValue"
 :key="key"
 />
 </el-select>
</el-form-item>
<el-form-item label=" :" prop="credentialNumber">
 <el-input v-model="user.credentialNumber" class="ext_inp2"></el-input>
</el-form-item>

携帯電話番号

const checkMobile = (rule, value, callback) => {
 if (!value) {
 return callback(new Error('携帯電話番号を空にすることはできない'));
 } else {
 const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
 if (reg.test(value)) {
 callback();
 } else {
 return callback(new Error('正しい携帯電話番号を入力する'));
 }
 }
};

小数を含む正数

// 身長と体重
const heightWeight = (rule, value, callback) => {
 const Reg = /^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/;
 if (value) {
 if (Reg.test(value)) {
 callback();
 } else {
 callback(new Error('正の数を入力する'))
 }
 }
}
Read next

vueのkeep-aliveについて知らないかもしれないこと

keep-alive はパッケージのルートの最後の履歴を保存でき、切り替えるときに2つの重要なフックがあります: activated と active です。 スイッチバックするとき、activatedフック機能がトリガーされます。だから、そのような一般的に使用されるページスクロールホイールトップなどの一連の操作を実行することができます:scrollTopは0です。

Oct 28, 2020 · 1 min read