FreeCodeCamp筆記之:Validate US Telephone Numbers

题目

Validate US Telephone Numbers
如果传入字符串是一个有效的美国电话号码,则返回true.
用户可以在表单中填入一个任意有效美国电话号码. 下面是一些有效号码的例子(还有下面测试时用到的一些变体写法):
555-555-5555
(555)555-5555
(555) 555-5555
555555 5555
5555555555
1 555 555 5555
在本节中你会看见如
800-692-7753
or8oo-six427676;
laskdjf
这样的字符串. 你的任务就是验证前面给出的字符串是否是有效的美国电话号码. 区号是必须有的. 如果字符串中给出了国家代码, 你必须验证其是1. 如果号码有效就返回true; 否则返回false.
当你遇到困难的时候,记得查看错误提示、阅读文档、搜索、提问。
这是一些对你有帮助的资源: RegExp

telephoneCheck("555-555-5555") 应该返回一个布尔值.
telephoneCheck("1 555-555-5555") 应该返回 true.
telephoneCheck("1 (555) 555-5555") 应该返回 true.
telephoneCheck("5555555555") 应该返回 true.
telephoneCheck("555-555-5555") 应该返回 true.
telephoneCheck("(555)555-5555") 应该返回 true.
telephoneCheck("1(555)555-5555") 应该返回 true.
telephoneCheck("1 555)555-5555") 应该返回 false.
telephoneCheck("1 555 555 5555") 应该返回 true.
telephoneCheck("1 456 789 4444") 应该返回 true.
telephoneCheck("123**&!!asdf#") 应该返回 false.
telephoneCheck("55555555") 应该返回 false.
telephoneCheck("(6505552368)") 应该返回 false
telephoneCheck("2 (757) 622-7382") 应该返回 false.
telephoneCheck("0 (757) 622-7382") 应该返回 false.
telephoneCheck("-1 (757) 622-7382") 应该返回 false
telephoneCheck("2 757 622-7382") 应该返回 false.
telephoneCheck("10 (757) 622-7382") 应该返回 false.
telephoneCheck("27576227382") 应该返回 false.
telephoneCheck("(275)76227382") 应该返回 false.
telephoneCheck("2(757)6227382") 应该返回 false.
telephoneCheck("2(757)622-7382") 应该返回 false.
telephoneCheck("555)-555-5555") 应该返回 false.
telephoneCheck("(555-555-5555") 应该返回 false.

思路

  1. 初看题目吓死宝宝了,这么多种情况;
  2. 应该是用正则表达式一种一种的配呗,要细心,慢慢来;
  3. 号码分析,正确号码应该是分3段:
    3.1 第一段为国家代码,固定为1位,切数字为1开头,可能存在空格,或者不是1 的情况;
    3.2 第二段为区号,固定3位,可能没有括号,也可能有括号;
    3.3 第三段为号码,固定7位,变化很多,有直接7位,也有 3位+(空格、短线)+4位,还有存在其他非法字符、大于7位的情况;
  4. 三段中间可能存在空格、短划线,也可能没有;
  5. 写的时候找到一个在线测试正则表达式的:工具
  6. 在查看 RegExp 的定义的时候,发现了.test() 的方法,可以用来测试某个字符串是否符合正则表达式,本题正好用上;

解答

function telephoneCheck(str) {
  // 祝你好运
    return /^1? ?(\d{3}|\(\d{3}\))[ |-]?\d{3}[ |-]?\d{4}$/.test(str);
}
telephoneCheck("555-555-5555");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要求 如果传入字符串是一个有效的美国电话号码,则返回true. 下面是一些有效号码的例子(还有下面测试时用到的一些...
    Oracle_c113阅读 280评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,082评论 19 139
  • Validate US Telephone Numbers Return true if the passed s...
    橙子_1259阅读 376评论 0 1
  • 在使用第三方库Masonry的过程中,遇到过各种各样的坑,以下就把笔者使用过程中的问题总结如下: 控件必须要添加到...
    小码农_gjw阅读 447评论 0 2
  • 当夜醒来 轻轻地叹了一口气 给自己 施上雾色的薄妆 缀上露珠的耳环 描上弯月的眉线 在寂寞的肩头,挂上柔风的披肩 ...
    李唐的小诗阅读 379评论 4 5