正则表达式匹配可选的'+'符号后跟任意数字的数字

时间:2012-10-02 20:54:42

标签: regex

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

那些应该匹配

  +35423452354554
  or
  3423564564

4 个答案:

答案 0 :(得分:32)

这应该有效

\+?\d+

匹配行的开头的可选+

之后的数字

编辑:

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

^\+?\d+$

答案 1 :(得分:9)

它看起来像这样:

\+?\d+

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

编辑:使用正则表达式时,请记住 find 匹配之间存在差异(至少在Java中,尽管大多数情况下都是如此)正则表达式实现有类似的方法)。 find 将在拥有字符串中的某处找到子字符串,而匹配将尝试将整个字符串与模式匹配,如果在之前或之后有额外的字符,则会失败。确保您使用正确的方法,并记住您可以添加^来强制行的开头,并$强制结束行(使整个事物看起来像{ {1}}。

答案 2 :(得分:6)

简单^\+?\d+$

开始行,然后是1或0加号,然后是至少1位数,然后是lnie

的结尾

答案 3 :(得分:1)

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