我正在使用正则表达式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+
之间有什么区别?
谢谢
答案 0 :(得分:4)
[\d+]
=一位数(0-9
)或+
字符。
\d+
=一位或多位数。
答案 1 :(得分:1)
你也可以这样做:
if re.search(r'^[789]\d{9}$', x):
让正则表达式使用显式长度而不是无限重复来处理len(x)==10
部分。
答案 2 :(得分:0)
我认为有关[]
和+
的一般性解释是您所需要的。
[]
将与内部指定的单个字符匹配
例如:[qwe]
将与q
,w
或e
匹配。
如果您想在[]
中输入表达式,则需要将其用作[^ expression]
。
+
将匹配前一个元素一次或多次。
例如:qw+e
匹配qwe
,qwwe
,qwwwwe
等...
注意:这与*
不同,因为*
匹配前面的元素零次或更多次。即qw*e
也匹配qe
。
\d
与数字匹配。 (不仅仅是0-9
,还有来自其他语言脚本的数字。)
答案 3 :(得分:0)
我不了解复杂性,但这也可行:
if (len(x)==10 and "789"==x[1:4]):