a64654612 2023-02-17 16:42 采纳率: 88%
浏览 65
已结题

表单输入长度限制 标点符号数字字母为0.5个长度,汉字为1个长度

input陷入字符,表单输入长度限制 标点符号数字字母为0.5个长度,汉字为1个长度,请教一下这个应该怎么实现呀?
^.{1,12}$ 现在只能校验长度,但是两个字母数字标点符号算一个字符这个不知道怎么办了
例子: 一个汉字算一个字符,如果是数字或者标点符号,或者字母,就是0.5个字符

写入antd-Form中
<Form>
  <Item
          name=''
          label=''
          rules={[
            {
              required: true,
              pattern:  ''
            },
          ]}
  > 
      <Input/>
  </Item>
</Form>

32填写标题 长度为5
填写标题 长度为4
a填写标题 长度为4.5
ab 为1
ab中 为2
%% 为1
34 为1

  • 写回答

9条回答 默认 最新

  • __AtYou__ 2023-02-17 21:29
    关注
    
    <Form>
      <Item
        name='title'
        label='标题'
        rules={[
          {
            required: true,
            validator: (rule, value) => {
              // 计算输入字符串的长度
              let len = 0;
              for (let i = 0; i < value.length; i++) {
                let c = value.charAt(i);
                // 判断是中文还是英文、数字或标点符号
                if (/[\u4e00-\u9fa5]/.test(c)) {
                  len += 1;
                } else {
                  len += 0.5;
                }
              }
              // 校验字符串长度是否符合要求
              if (len >= 5 && len <= 12) {
                return Promise.resolve();
              } else {
                return Promise.reject('长度必须在5-12之间');
              }
            },
          },
        ]}
      > 
        <Input/>
      </Item>
    </Form>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 修改了问题 2月17日
  • 赞助了问题酬金15元 2月17日
  • 展开全部