【发布时间】: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