【问题标题】:Regular expression for check number and +支票号码和 + 的正则表达式
【发布时间】:2017-08-22 06:13:41
【问题描述】:

对不起,非常无用的问题!

我需要正则表达式来检查这种类型的字符串

+7

我尝试了 .replace(/^+[0-9][^\d]/g, '') 但它给了我所有其他类型的数学符号,我需要 第一个符号 + 第二个数字 1 - 9

【问题讨论】:

  • 请分享相关代码。您是否试图只保留第一个 + 和字符串中的一个数字?试试.replace(/^(\+\d).*/, '$1')
  • 你的正则表达式中唯一的问题是你应该像这样转义'+'':/^\+[0-9][^\d]/g 然后它就可以正常工作了。
  • @WiktorStribiżew 是的,我尝试做 +7 检查,抱歉替换(/^+[0-9][^\d]/g, '')
  • 那么,您说您需要验证一个以+ 开头的字符串,然后是任何一位数字? s.test(/^\+[1-9]$/) 可能有用。
  • value.replace(/\+\d+/gm) - 这个变种不起作用!我只需要第一个符号 + 和一个从 1 到 9 的数字之后

标签: javascript regex


【解决方案1】:

你的正则表达式需要是

^\+[0-9][^\d]

如果你想匹配所有以 + 开头的数字,你可以使用

/\+\d+/g

注意这将匹配 +73ab 并返回 +73

如果你只想要数字,你可以使用

/\b\+\d+\b/g

【讨论】:

    【解决方案2】:

    Plus + 是正则表达式中使用的一个特殊字符,用于指示它前面的表达式出现一次或多次。这就是为什么它在您的示例中不起作用的原因。你应该用\ 转义它。

    1. 如果要在多行文本中获取所有以加号为前缀的数字,可以使用:

      /\+\d+/gm

    例如:

    var numbers = 'skdlfjlk +7fsd \r\nsd;flk+123'.match(/\+\d+/gm);
    console.log(numbers); // => ["+7", "+123"]
    1. 如果“数字”实际上是指从19 的数字,并且您只对字符串中的第一次出现感兴趣,则可以使用:

      /\+[1-9]/m

    2. 另外,如果你需要它作为字符串的开头,你可以只使用:

      /^\+[1-9]/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2017-09-23
      • 2014-02-15
      相关资源
      最近更新 更多