【问题标题】:Why Redux Forms field number validation keeps allowing the letter 'e'?为什么 Redux Forms 字段编号验证一直允许使用字母“e”?
【发布时间】:2019-09-16 12:57:01
【问题描述】:

在他的官方页面https://redux-form.com/6.6.1/examples/fieldlevelvalidation/

“Age”字段是 Redux-forms 如何错误地假设字母 e 可以是 keyPress 上的有效字符的一个示例,而不是只允许数字。

我尝试了以下验证,以排除字母 e,但没有成功:

export const onlyNumber = (value) => {
  return /^[^e]$|[0123456789]$/i.test(value);
};

什么可能是跳过 Redux-Forms 验证方式并实际能够创建仅数字(不包括 'e')字段的成功方法?

【问题讨论】:

  • 我不明白。根据您的正则表达式,您希望允许 ANY 不是e 的单个字符,或者您希望允许所有内容,只要它以数字结尾?与其责怪 Redux,不如你真正解释你正在尝试做的事情,并确保提供你期望验证的示例和验证失败的示例,这将是非常有益的。此外,您的困惑是源于在一般情况下使用 Redux 还是仅在 JS 中使用正则表达式函数或仅是正则表达式?
  • 嗨 @MonkeyZeus,恕我直言,我正在就 Redux-Forms 问题寻求帮助,正如我之前确实提到的:“redux-form.com/6.6.1/examples/fieldlevelvalidation 注意 Age 字段允许 'e '作为输入”。显然,我正在寻求有关如何在按键时手动不允许“e”作为输入传递的帮助。
  • 我明白了,您指的是指数。如果您想确保只输入数字,那么 ^[0-9]+$ 就是您所需要的。
  • 谢谢@MonkeyZeus,不幸的是,由于 [0123456789]$ 相当于 [0-9]+$,它仍然不起作用。我正在寻找任何额外的验证,但事实是它可能需要我做一个纯 JS 解决方法,而不再涉及正则表达式
  • 你的代码肯定有其他问题,因为如果你从控制台运行/^[0-9]+$/i.test('7'),那么你会得到true,但/^[0-9]+$/i.test('1e1')会产生false

标签: regex redux react-redux react-redux-form redux-form-validators


【解决方案1】:

这是一个功能,事实上它允许'e'...在 Github 中向 @iamandrewluca 大喊,在 https://github.com/erikras/redux-form/issues/4538 上回答我的问题

类似的问题,以及禁止在堆栈溢出中显示“e”的响应/解决方法: https://stackoverflow.com/a/31706796/4671932

文档: https://html.spec.whatwg.org/multipage/input.html#number-state-(type%3Dnumber)

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多