记录一下antd中的手机号身份证表单验证

331 阅读1分钟
      <Form.Item
        label="电话"
        name="phone"
        rules={[{required: true, message: '请输入电话', max: 11},
        ({getFieldValue}) => ({
          validator(_, e: any) {
            const value = getFieldValue('phone');
              if(value){
                if (value.length === 11 && !(/^(1[3456789]|9[28])\d{9}$/).test(value)) {
                  return Promise.reject(new Error('请输入11位有效电话号码!'));
                }
                if (value.length !== 11) {
                  return Promise.reject(new Error('请输入11位电话号码!'));
                }
                return Promise.resolve();
              }
              return Promise.resolve();
            },
          }),
        ]}
      >
        <Input maxLength={100}  placeholder='请输入电话' />
      </Form.Item>
      <Form.Item
        label="身份证号"
        name="idCard"
        rules={[{required: true, message: '请输入身份证号'},{
          whitespace: true
        },
        ({getFieldValue}) => ({
          validator(_, e: any) {
            const value = getFieldValue('idCard');
            if(value) {
              if (value.length === 18 && !(/^[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-9X]$/.test(value))) {
                return Promise.reject(new Error('请输入18或15位有效身份证号!'));
              }
              if (value.length == 15 && !(/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/.test(value))) {
                return Promise.reject(new Error('请输入18或15位有效身份证号!'));
              }
              return Promise.resolve();
            }
            return Promise.resolve();
          },
        }),
      ]}
      >
        <Input maxLength={100}  placeholder='请输入身份证号' />
      </Form.Item>