我在Python中遇到问题,程序必须检查用户是否以有效格式输入电话号码,例如:(111)-111-1111
我让该程序可以使用Python regex 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 (###)-###-####")
答案 0 :(得分:1)
您真的可以使代码正常工作了。 您只需要将样本修改为:
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
,因为您要检查数字是否遵循模式(正则表达式),并且不希望从中提取某些子信息。
此外,您还需要在正则表达式中添加锚点(^
,$
),以强制输入字符串在开头或结尾不包含其他字符。
输出:
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 (###)-###-#
答案 1 :(得分:1)
对于验证(111)-111-1111
之类的手机号码,我认为您不需要像([(+*)]\d{3}[(+*)][a-]\d{3}[a-]\d{4})
这样的过于复杂和不正确的正则表达式,即使您将起始锚点^
和结束锚点{{1 }},它将验证以下正确的手机号码是否有效
$
Check this demo to see how it allows invalid mobile numbers
要验证)111(a111a1111
*111+-111-1111
这样的手机号码,您可以使用以下正则表达式
(111)-111-1111
Demo for correctly validating mobile numbers
如果您想允许此^\(\d{3}\)-\d{3}-\d{4}$
手机号码的任何变体有效,请告诉我。
另外,为了验证文本,您应该使用(111)-111-1111
函数而不是match
,后者用于从文本中提取信息,而前者则用于匹配文本以确保有效性。
这是一个示例python代码,该代码显示了您应如何验证手机号码,
findall
打印
import re
arr = ['(111)-111-1111','(((((111)-111-1111',')111(a111a1111','*111+-111-1111']
for s in arr:
if (re.match(r'^\(\d{3}\)-\d{3}-\d{4}$', s)):
print(s, ' --> is Valid mobile number')
else:
print(s, ' --> is Not Valid mobile number')
答案 2 :(得分:0)
您可以使用以下行:
let parte = prompt("What is your name?"); //line 1
//let parte = "Batman"; // line 2
let documents = "bla bla bla";
let $dummy = $("<input>");
$dummy.attr("value", parte+ " " + documents);
$("body").append($dummy);
$dummy.select();
document.execCommand("copy");
$dummy.remove();
这还将检查开始和结束字符。