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

时间:2019-02-19 02:53:04

标签: python regex

我在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 (###)-###-####")

3 个答案:

答案 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();

这还将检查开始和结束字符。