美文网首页
freeCodeCampde练习之美国手机正则匹配

freeCodeCampde练习之美国手机正则匹配

作者: 神易风 | 来源:发表于2018-12-06 00:06 被阅读22次

freeCodeCamp一个比较经典的正则匹配算法,虽然不是很难,但是我居然没写对啊😭,也说明我对正则还没有完全掌握!

题目

如果传入字符串是一个有效的美国电话号码,则返回 true.

用户可以在表单中填入一个任意有效美国电话号码. 下面是一些有效号码的例子(还有下面测试时用到的一些变体写法):

555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555

在本节中你会看见如800-692-7753 or 8oo-six427676;laskdjf这样的字符串. 你的任务就是验证前面给出的字符串是否是有效的美国电话号码. 区号是必须有的. 如果字符串中给出了国家代码, 你必须验证其是 1. 如果号码有效就返回 true ; 否则返回 false.

这个题目的答案,在网上搜一下啊,基本都能找到。关键做完一个后,有所收获,有所成长,下次遇到类似,知道怎么去解决。
遇到手机号,电话这些匹配,第一个思路就是长度,我没有做对,就是忽略这个重要因素。

题目说了可以出现国家代码,但必须是1,这里1就是第一个组,频率是0或者1次,就可以使用正则?,(1-?\s?)?
前面的三位就区号,有两种格式(555)带括号包裹和没有括号555第二组就出来了:(\(\d{3}\)|\d{3}),第三者是一个三种数字,这个就比较简单了\d{3},最后是四位,跟第三组一样。每一个组之间可能存在空格或者-连接
正则表达式:
/^(1-?\s?)?(\(\d{3}\)|\d{3})-?\s?\d{3}-?\s?\d{4}$/

说说我做错的原因,我在第二组和第三组合并成一个组用+表示频率,导致整个电话长度就不确定,现在想想就是很蠢啊,离成功就差一步。

相关文章

网友评论

      本文标题:freeCodeCampde练习之美国手机正则匹配

      本文链接:https://www.haomeiwen.com/subject/igigcqtx.html