2023 © RegexOne
邮箱 | Twitter
根据输入电话号码的类型,验证电话号码是一项棘手的任务。如果需要处理来自州外的电话号码,这些号码需要**区号**,或者需要处理国际电话号码,这些号码需要**前缀**,这将增加正则表达式的复杂性,同样,人们输入电话号码的个人喜好也会增加复杂性(例如,有些人使用**连字符**或**空格**,而有些人则不使用)。
以下是一些您在使用真实数据时可能会遇到的电话号码,编写一个正则表达式来匹配这些号码并捕获正确的区号。
任务 | 文本 | 捕获组 | |
捕获 | 415-555-1234 | 415 | |
捕获 | 650-555-2345 | 650 | |
捕获 | (416)555-3456 | 416 | |
捕获 | 202 555 4567 | 202 | |
捕获 | 4035555678 | 403 | |
捕获 | 1 416 555 9292 | 416 |
解答 | 要从电话号码中提取区号,我们可以简单地捕获前三位数字,使用表达式 (\d{3})。 但是,为了匹配整个电话号码,我们可以使用表达式 1?[\s-]?\(?(\d{3})\)?[\s-]?\d{3}[\s-]?\d{4}。这可以分解为国家代码 '1?',捕获的区号 '\(?(\d{3})\)?',以及其余的数字 '\d{3}' 和 '\d{4}'。我们使用 '[\s-]?' 来捕获每个组件之间的空格或连字符。 |