问题 2:匹配电话号码

根据输入电话号码的类型,验证电话号码是一项棘手的任务。如果需要处理来自州外的电话号码,这些号码需要**区号**,或者需要处理国际电话号码,这些号码需要**前缀**,这将增加正则表达式的复杂性,同样,人们输入电话号码的个人喜好也会增加复杂性(例如,有些人使用**连字符**或**空格**,而有些人则不使用)。

以下是一些您在使用真实数据时可能会遇到的电话号码,编写一个正则表达式来匹配这些号码并捕获正确的区号。

练习 2:匹配电话号码
任务 文本 捕获组  
捕获 415-555-1234 415 To be completed
捕获 650-555-2345 650 To be completed
捕获 (416)555-3456 416 To be completed
捕获 202 555 4567 202 To be completed
捕获 4035555678 403 To be completed
捕获 1 416 555 9292 416 To be completed
解答

要从电话号码中提取区号,我们可以简单地捕获前三位数字,使用表达式 (\d{3})

但是,为了匹配整个电话号码,我们可以使用表达式 1?[\s-]?\(?(\d{3})\)?[\s-]?\d{3}[\s-]?\d{4}。这可以分解为国家代码 '1?',捕获的区号 '\(?(\d{3})\)?',以及其余的数字 '\d{3}' 和 '\d{4}'。我们使用 '[\s-]?' 来捕获每个组件之间的空格或连字符。

解决上述任务以继续下一个问题,或者阅读 解答