gpt4 book ai didi

python正则表达式将括号限制为一次

转载 作者:行者123 更新时间:2023-12-01 01:12:03 25 4
gpt4 key购买 nike

我在 Python 中遇到问题,程序必须检查用户是否以有效格式输入电话号码,例如:(111)-111-1111我使用 Python 正则表达式 re.findall 函数让这个程序工作,但是,后来我意识到该程序允许用户输入任意数量的括号,例如: (((( (111)-111-1111 并且这仍然会作为有效格式通过程序。问题。有没有办法将括号的数量限制为 (111)-111-1111 格式?我的代码如下:

import re
number=input("Please enter phone number: " )
x=re.findall('([(+*)]\d{3}[(+*)][a-]\d{3}[a-]\d{4})', number)
if (x):
print("Perfect! Your format is valid: --> " "'"+number+"'")
else:
print("Not a valid format, please enter as (###)-###-####")

最佳答案

您的代码已经非常接近运行了。您只需将示例调整为:

import re

number=input("Please enter phone number: " )
x=re.match('^([(+*)]\d{3}[(+*)][a-]\d{3}[a-]\d{4})$', number)
if (x):
print("Perfect! Your format is valid: --> " "'"+number+"'")
else:
print("Not a valid format, please enter as (###)-###-####")

当您检查数字是否遵循模式(正则表达式)并且不希望提取时,您不使用 findall,而是使用 match其中的一些子信息。

此外,您还需要在正则表达式中添加 anchor (^$),以强制输入字符串在开头或结尾不包含其他字符。

输出:

Please enter phone number:  '(111)-111-1111'
Perfect! Your format is valid: --> '(111)-111-1111'
Please enter phone number: '(((((111)-111-1111'
Not a valid format, please enter as (###)-###-#

关于python正则表达式将括号限制为一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54758203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com