Python正则表达式[\ d +]

时间:2016-10-15 00:08:06

标签: python regex

我正在使用正则表达式python,我遇到了这个问题。

有效的手机号码是以7,8或9开头的十位数字。 我对此的解决方案是:

if len(x)==10 and re.search(r'^[7|8|9]+[\d+]$',x):

我的错误。后来我改成了

if len(x)==10 and re.search(r'^[7|8|9]+\d+$',x):

所有测试用例都通过了。我想知道在正则表达式中使用[]\d+之间有什么区别?

谢谢

4 个答案:

答案 0 :(得分:4)

[\d+] =一位数(0-9)或+字符。

\d+ =一位或多位数。

答案 1 :(得分:1)

你也可以这样做:

if re.search(r'^[789]\d{9}$', x):

让正则表达式使用显式长度而不是无限重复来处理len(x)==10部分。

答案 2 :(得分:0)

我认为有关[]+的一般性解释是您所需要的。

[]将与内部指定的单个字符匹配 例如:[qwe]将与qwe匹配。

如果您想在[]中输入表达式,则需要将其用作[^ expression]

+将匹配前一个元素一次或多次。 例如:qw+e匹配qweqwweqwwwwe等... 注意:这与*不同,因为*匹配前面的元素零次或更多次。即qw*e也匹配qe

\d与数字匹配。 (不仅仅是0-9,还有来自其他语言脚本的数字。)

答案 3 :(得分:0)

我不了解复杂性,但这也可行:

if (len(x)==10 and "789"==x[1:4]):