35

我想要一个正则表达式来匹配一个字符串,该字符串可能以加号开头,也可能不以加号开头,然后包含任意数量的数字。

这些应该匹配

  +35423452354554
  or
  3423564564
4

4 回答 4

58

这应该工作

\+?\d+

匹配+行首的可选项和后面的数字

编辑:

根据 OP 的澄清要求: 3423kk55 是匹配的,因为它是第一部分(3423)。要匹配整个字符串,请仅使用它:

^\+?\d+$
于 2012-10-02T20:58:00.310 回答
12

它看起来像这样:

\+?\d+

\+表示字面加号,表示?前组(加号)可以出现0次或1次,\d表示数字字符,final+要求前组(数字)出现一次或多次。

编辑:使用正则表达式时,请记住查找匹配之间存在差异(至少在 Java 中,尽管大多数正则表达式实现都有类似的方法)。find将在拥有字符串的某个位置找到子字符串,并且matches将尝试将整个字符串与模式匹配,如果之前或之后有额外的字符则失败。确保您使用了正确的方法,并记住您可以添加 a^来强制行的开头和 a$来强制行的结尾(使整个事情看起来像^\+?\d+$.

于 2012-10-02T20:58:16.137 回答
6

简单的^\+?\d+$

起始行,然后是 1 或 0 加号,后跟至少 1 位数字,然后是 lnie 结尾

于 2012-10-02T20:58:19.807 回答
1

它的 Perl 正则表达式可以是:\+?\d+

于 2012-10-02T20:58:10.957 回答