ant-design表单验证手机号身份证号

977 阅读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>