Javascript Regex允许使用以下符号

Javascript Regex允许使用以下符号,javascript,regex,Javascript,Regex,我试图做一个简单的电话号码验证,为此我很难用正则表达式进行验证。我希望允许用户输入以下内容: 任何数字 - + ( ) 空格/空格 目前我有这样的想法:/[0-9-+()\s]*/im,但它似乎不起作用。有人能帮我吗?我没有针对任何特定的国家,因此我不想遵循任何严格的格式。您需要以^字符开始,以强制它从开始匹配,并以$字符开始,以强制它匹配到结束。否则,它将匹配它所能匹配的,并忽略除此之外不匹配的任何内容。你也可以更直接地使用它。例如,+字符可能只允许作为第一个字符,或者您可能希望强制至少有7个

我试图做一个简单的电话号码验证,为此我很难用正则表达式进行验证。我希望允许用户输入以下内容:

  • 任何数字
  • -
  • +
  • (
  • )
  • 空格
    /空格

  • 目前我有这样的想法:
    /[0-9-+()\s]*/im
    ,但它似乎不起作用。有人能帮我吗?我没有针对任何特定的国家,因此我不想遵循任何严格的格式。

    您需要以
    ^
    字符开始,以强制它从开始匹配,并以
    $
    字符开始,以强制它匹配到结束。否则,它将匹配它所能匹配的,并忽略除此之外不匹配的任何内容。你也可以更直接地使用它。例如,
    +
    字符可能只允许作为第一个字符,或者您可能希望强制至少有7个字符。下面的示例代码显示了其中的一些

    //r1通过添加^and$
    常数r1=/^[-+0-9()\s]*$/
    //          =            =
    //r2添加的规则如“+”只能出现在开始处
    //并且必须至少有7位数字
    常数r2=/^\+?[-0-9()\s]{7,}$/
    //           ===          ====
    常数测试=[
    "123 456-7890", 
    "789", 
    "+4 9084342",
    “你好”,
    "123+457+432",
    "1234567!"
    ]
    for(const num of tests)console.log(`r1:${r1.test(num)}-${num}`)
    console.log(“----”)
    
    for(const num of tests)console.log(`r2:${r2.test(num)}-${num}`)
    Escape
    -
    ,方法是在反斜杠前面加上前缀或将其移到末尾。这是否回答了您的问题?许多字符需要转义。\+-()@AlwaysLearning,不,它针对一个国家的特定格式。我尝试转义所有字符,但仍然没有成功
    /[0-9\-\+\(\)\s]*/im
    @QuentinUK无需转义括号表达式中的
    +
    或括号。另外,如果OP使用的是某种验证,比如angular,那么regex不应该包含在
    ^
    $
    锚中。OP必须显示代码。在字符类中不需要转义
    +()
    ,如果它位于第一个或最后一个位置,则不需要转义
    -
    <代码>[-0-9+()\s]可读性更强。你说得对@Toto我已经调整了答案,因为它更容易阅读