问题描述:

Return the number (count) of vowels in the given string.

We will consider a, e, i, o, and u as vowels for this Kata.

The input string will only consist of lower case letters and/or spaces.

 function getCount(str) {
var vowelsCount = 0; // enter your majic here return vowelsCount;
}

我的答案:

 function getCount(str) {
var vowelsCount = 0; // enter your majic here
var a=str.split("");
for (var i=0;i<a.length;i++){
if(a[i]=="a" || a[i]=="e" || a[i]=="i" || a[i]=="o" || a[i]=="u"){
vowelsCount+=1;
}
}
return vowelsCount;
}

对于本题,虽然想用string.match做,但是发现自己的正则不会,于是就选用了最原始的,逐个判断是不是元音。想哭!后来发现也有大神没有用match正则做,也可以。

优秀答案:

 function getCount(str) {
let vowels = ['a','e','i','o','u'];
return str.split('').filter(letter => {
return vowels.includes(letter)? true : false;
}).length;
}

这是暂时排名第一的答案:(和我的想法一致,(#^.^#),但是我也写不成这么精简的一行)

 function getCount(str) {
return (str.match(/[aeiou]/ig)||[]).length;
}

不过大神们,你们这样真的好吗?

补一波前面欠下的正则的债。

可用到正则的String方法 用法
match match(regexp);返回符合规则的内容,格式为数组;失败为null
search search(regexp);返回符合规则的内容第一次出现的位置;失败为-1
replace replace(regexp,newvalue);查找渡河正则的字符串,替换为newvalue;返回替换后的内容

以下总结参考
http://deerchao.net/tutorials/regex/regex.htm

http://www.jb51.net/article/110516.htm

    1. 元字符

      元字符 含义
      . 匹配除换行符之外的任意字符
      \w 匹配字母或数字或下划线或汉字
      \s 匹配任意的空白符space
      \d 匹配任意的数字digit
      \b   匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束
  1. 转义字符
    转义字符 含义
    \. 对应字符 .
    \* 对应字符 *
    \\ 对应字符 \
  2. 重复
    重复字符 含义
    * 重复>=0
    + 重复>=1
    ? 重复0或1次
    {n} 重复n次
    {n,m} 重复n到m次,包含n和m
    {n,} 重复>=n
  3. 字符类
    匹配预设元素[ ] 含义
    [aeiou] 匹配一个英文元音字母
    [.!?] 匹配符号(. ! ?)
    [0-9] 匹配任意数字,同 \d
    [a-zA-Z0-9] 匹配任意数字字母,同 \w
  4. 反义
    元字符 含义
    \W 匹配不是字母或数字或下划线或汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B   匹配不是单词的开始或结束的位置
    [^x] 匹配除了x以外的字符串
    [^aeiou] 匹配除aeiou以外的任意字符
  5. 修饰符
    修饰符 含义
    g 全局匹配
    i 不区分大小
    m 多行模式,会改变^ $行为
  6. JS创建正则
    (1)var exp=/ pattern / flags;   //其中pattern是正则表达式,flags是修饰符
    例: var p=/ \b[aeiou][a-z]+\b/gi /;

    (2)var pattern= new RegExp("\\b[aeiou][a-z]+\\b","gi");

  7. JS匹配提取exec()
    var matches=pattern.exec(str);   //返回:结果数组或null
    结果数组有两个属性,index表示匹配项所在字符串的位置; input表示源字符串
    matches[0]表示匹配整个正则的第一个捕获的匹配的字符串;;;matches[n] 表示匹配整个正则的第n个捕获的匹配的字符串

    例如: var pattern=/ \b([a-zA-Z]+)ing\b /g;
    var str="reading and writing";
    则matches=pattern.exec(str);   // matches.index为0时,matches[0]: reading   matches[1]: read
    // matches.index为12时,matches[0]: writing   matches[1]: writ

  8. JS匹配成功与否test()
    var result=pattern.test(str);   //返回:找到匹配项,返回true,否则false
  9. 应用正则和思路
    凡是和“找”有关的。而且是字符串的
    两类应用正则问题
    (1)验证类问题
    (2)搜索、提取、替换类问题

codewars--js--vowels counting+js正则相关知识的更多相关文章

  1. js中错误处理的相关知识

    错误bug是指程序执行过程中,导致程序无法正常执行的情况. 后果:程序会强行中断退出:     错误处理:                即使程序出现错误,也保证程序不异常中断的机制. 一般的使用的代 ...

  2. js中字符串和正则相关的方法

    正则表达式对象常用方法 test() 检索字符串中指定的值.返回 true 或 false. var str="Embrace You" var r1=/you/i.test(st ...

  3. JS作用域相关知识(#精)

    在学习<你不知道的JS>一书中,特将作用域相关知识在此分享一下: #说到作用域,就不得不提到LHS查询和RHS查询: 1)如果查询目的是对变量进行赋值,则使用LHS查询 2)如果查询目的是 ...

  4. [小问题笔记(六)] 解决JS已执行,输出内容乱码问题. 顺带总结编码相关知识

    问题: JS输出的内容出现了乱码.如图: 分析:既然年和月的数字可以正常显示,证明js加载和执行都没有问题 解决:把js引用处的编码方式改成当前页面编码一致.charset="gb2312& ...

  5. Vue.js 相关知识(动画)

    1. 简介 Vue 在插入.更新或移除 DOM 时,提供多种不同方式的过渡效果,并提供 transition 组件来实现动画效果(用 transition 组件将需执行过渡效果的元素包裹) 语法:&l ...

  6. js 面试题正则相关

    正则相关[i不区分大小写,g匹配全部数据] var str = "Hello word! I think word is good."; 1.替换str中的word为javascr ...

  7. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  8. js和HTML结合(补充知识:如何防止文件缓存的js代码)

    来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(二) 使用html标签<script>可以把js嵌入到html页面中,让脚本 ...

  9. JS -- 一篇文章掌握RequireJS常用知识

    本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...

随机推荐

  1. numpy nan和inf

    一.nan和inf的简介 nan 不是一个数字 读取本地文件为flaot的时候,有缺失 inf(infinity): 无穷尽 inf: 正无穷 -inf: 负无穷 数据类型:float # 注意: 要 ...

  2. [Other]THUWC2020 游记

    Dec. 20th 一下飞机,\(\text{FJ}\) 选手感觉 \(\text{BJ}\) 好冷 下午去了鸟巢,晚上回 \(\text{GLHT}\) 酒店吃泡面 写了洛谷上的线段树分治模板题之后 ...

  3. 在winform中使用cefsharp.winform嵌入浏览器(含视频教程)

    免费视频教程和源码: https://www.bilibili.com/video/av84573813/ 1. 开始使用CefSharp在Winform中嵌入网页 2. 解决重复打开Cefsharp ...

  4. 深入浅出MyBatis技术原理与实战

    第1 章 MyBatis 简介..................................................................................... ...

  5. 学习 lind UML 资源 十月 第二弹

    step one 来分析一下  UML 资源 管理

  6. 一文带你了解 HTTP 黑科技

    这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章. 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技. HT ...

  7. Linux网络文件共享服务之smaba

    一.SAMBA服务简介 samba是1991年由Andrew Tridgel开发实现,主要用于Windows和unix文件共享.samba实现了共享文件和打印,实现在线编辑,登录SAMBA用户的身份认 ...

  8. selenium,测试套件的使用

    学习 selenium-webdriver 已经一段时间了,最近学习到,测试用例的批量执行,和测试套件的使用,有点自己的理解,不晓得对不对,希望大家指正!   写一个测试用例 baidu.py   c ...

  9. webpack4.0 ---引用vue文件

    一.引入Vue 1.安装依赖环境 npm i vue-loader -D;//解析转化.vue文件,npm i vue-style-loader -D npm i vue-template-compi ...

  10. 缓存 ehcache

    只是用于自己记录,防止日后忘记,回看所用 第一步:配置ehcahe 缓存 <?xml version="1.0" encoding="UTF-8"?> ...