使用带有特殊字符的正则表达式进行数字格式化

Fre*_*e09 5 javascript regex reactjs

我正在学习正则表达式,我想在react app中实现它,所以当我在输入字段上写东西时,我想允许用户只写数字和最大一个空格。此字符串还必须以+字符开头。我的正则表达式工具向我显示了良好的结果,但是在应用程序中我什么都没写。

const handlePhone = ({currentTarget}) => {
    let val = currentTarget.value;
    // Regular expression
    const reg = /^\+\d+/g;
    const isNumber = val.match(reg);
    if (isNumber || val === '') {
      setFieldValue('phone', val);
    }
  };
Run Code Online (Sandbox Code Playgroud)

我想用这个表达式实现它:以+开头,以后可以写一些数字。

在此处输入图片说明

但是在应用程序中,我什么都不能写。为什么此工具与实时匹配有很大不同?

有了这个:

const reg = /^\+\d+( \d+)*$/;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Rob*_*obG 1

我认为你需要一些非常简单的东西,比如/^\+\d* ?\d*$/

  • ^\+ 以“+”开头
  • \d* 然后是零个或多个数字
  • ? (空格?)然后零或一个空格
  • \d* 然后是零个或多个数字
  • $ 字符串结尾

例如

function checkValue(el) {
  let re = /^\+\d* ?\d*$/;
  document.getElementById('err').textContent = re.test(el.value)? 'good':'bad';
}
Run Code Online (Sandbox Code Playgroud)
<input oninput="checkValue(this)"><br>
<span id="err"></span>
Run Code Online (Sandbox Code Playgroud)