Javascript 使用带有特殊字符的正则表达式设置数字格式
我正在学习正则表达式,我想在react应用程序中实现它,所以当我在输入字段上写东西时,我想让用户只写数字,最多写一个空格。此字符串还必须以+字符开头。我的正则表达式工具向我展示了很好的结果,但在应用程序中我不能写任何东西Javascript 使用带有特殊字符的正则表达式设置数字格式,javascript,regex,reactjs,Javascript,Regex,Reactjs,我正在学习正则表达式,我想在react应用程序中实现它,所以当我在输入字段上写东西时,我想让用户只写数字,最多写一个空格。此字符串还必须以+字符开头。我的正则表达式工具向我展示了很好的结果,但在应用程序中我不能写任何东西 const handlePhone = ({currentTarget}) => { let val = currentTarget.value; // Regular expression const reg = /^\+\d+/g; c
const handlePhone = ({currentTarget}) => {
let val = currentTarget.value;
// Regular expression
const reg = /^\+\d+/g;
const isNumber = val.match(reg);
if (isNumber || val === '') {
setFieldValue('phone', val);
}
};
我想用这个表达式来实现这个:从+开始,然后你可以写一些数字
但在应用程序中,我不能写任何东西。为什么此工具与此实时匹配如此不同
为此:
const reg = /^\+\d+( \d+)*$/;
这应该可以:
^\+?\d+( \d+)?$
-开始锚定^
-可选地以加号开头\+?
-要求后面至少有一位数字\d+
-可选地允许空格后跟一个或多个数字(\d+)
-端锚$
尝试此正则表达式,并在此中检查正则表达式
const reg = /^\+\d+ \d+$/gm;
^+:-将检查字符串是否以+开头\d+:-这将允许1个或多个数字
\s:-这将只允许一个空间
$:-这将确保字符串以数字结尾,并限制第二次使用空格字符
我想你需要一些非常简单的东西,比如
/^\+\d*?\d*$/
,这意味着:
以“+”开头^\+
然后是零位或更多位\d*
(空格?)?
然后是零位或更多位\d*
字符串结尾$
函数校验值(el){
设re=/^\+\d*?\d*$/;
document.getElementById('err').textContent=re.test(el.value)?“good”:“bad”;
}
我的正则表达式非常臃肿,但它应该可以工作
const regex = \^\+[\d]+(\s)*(\d)+$\g;
因为您的正则表达式要求已经存在
+
和1位数字。更改为const reg=/^\+\d*(?:\s\d*)?$/代码>。此外,它仅适用于实时验证。提交时验证可能需要另一个正则表达式,如const reg=/^\+\d+(?:\s\d+)$/代码>。此外,使用RegExp#test(String)
检查字符串是否与regex匹配也是有意义的。因此,您可以使用按键、向上、向下、,funkychickendance?我正在用Formik Library的onChange方法调用它。我的isNumber常量返回我'null',我不能为你写任何东西添加屏幕截图。它还将接受2个空格。i、 e.,+123 132。哪一个OP不想要。@Freestyle 09我对react不太熟悉,无法提出代码改进建议。@Freestyle 09抱歉,我无法提供更多帮助,但我对react不太熟悉。我更新了我的正则表达式,使前面的+
符号可以根据您对另一个答案EP的评论进行选择。OP没有说它必须有数字,只是它只能有数字和最大的1个空间。哇,太好了,你能更新这个选项以+或数字开头吗?但是当你写数字“+”时,就不允许了??我可以,但是…regexp将以^[+\d]开头
。你有什么好的资料可以教我更多的正则表达式技巧吗?\s
允许任何空格字符,而不仅仅是空格。