目录

Situation 背景

  • 多人开发的老项目里面,很多地方都写了验证手机格式的需求,代码各有千秋、百花齐放
  • 实现:有的写在公共组件库里,有的是单独开发局部组件支持,有的直接手写不复用,有的抽离正则到utils再引入
  • 正则:正则校验也各有千秋,比如/^\d{11}/、/1\d10/、/1[2−9]\d9/、/^1\d{10}/、/^1[2-9]\d{9}/、/1\d10/、/1[2−9]\d9/、/^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/等等。
  • 长度限制:有的地方限制maxLength=11,而有的地方没限制
  • 输入格式:有的地方满足334格式(181 2222 3333)手机号码输入, 而有的地方只允许输入纯数字

Target 目标

  • 实现一个易用的手机号码公共组件
  • 使用较为宽松的正则校验并与后端达成一致
  • 不再限制输入长度但会报错提示
  • 支持334的格式输入,并自动去除所有空格
  • 写好参数说明,方便开发使用
  • 尽可能的保持灵活,适用更多场景

Action 行动

import type {
  FormItemProps,
  InputProps,
  RulesProps,
} from '@arco-design/web-react';
import { Form, Input } from '@arco-design/web-react';
import { usePersistCallback } from '@byted/hooks';
import type { ReactNode } from 'react';
import { useMemo } from 'react';
export type VerifyInputProps = {
  /** 

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章