codewars--js--vowels counting+js正则相关知识
问题描述:
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
- 元字符
元字符 含义 . 匹配除换行符之外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符space \d 匹配任意的数字digit \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束
- 元字符
- 转义字符
转义字符 含义 \. 对应字符 . \* 对应字符 * \\ 对应字符 \ - 重复
重复字符 含义 * 重复>=0 + 重复>=1 ? 重复0或1次 {n} 重复n次 {n,m} 重复n到m次,包含n和m {n,} 重复>=n - 字符类
匹配预设元素[ ] 含义 [aeiou] 匹配一个英文元音字母 [.!?] 匹配符号(. ! ?) [0-9] 匹配任意数字,同 \d [a-zA-Z0-9] 匹配任意数字字母,同 \w - 反义
元字符 含义 \W 匹配不是字母或数字或下划线或汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词的开始或结束的位置 [^x] 匹配除了x以外的字符串 [^aeiou] 匹配除aeiou以外的任意字符 - 修饰符
修饰符 含义 g 全局匹配 i 不区分大小 m 多行模式,会改变^ $行为 - 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");
- 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 - JS匹配成功与否test()
var result=pattern.test(str); //返回:找到匹配项,返回true,否则false - 应用正则和思路
凡是和“找”有关的。而且是字符串的
两类应用正则问题
(1)验证类问题
(2)搜索、提取、替换类问题
codewars--js--vowels counting+js正则相关知识的更多相关文章
- js中错误处理的相关知识
错误bug是指程序执行过程中,导致程序无法正常执行的情况. 后果:程序会强行中断退出: 错误处理: 即使程序出现错误,也保证程序不异常中断的机制. 一般的使用的代 ...
- js中字符串和正则相关的方法
正则表达式对象常用方法 test() 检索字符串中指定的值.返回 true 或 false. var str="Embrace You" var r1=/you/i.test(st ...
- JS作用域相关知识(#精)
在学习<你不知道的JS>一书中,特将作用域相关知识在此分享一下: #说到作用域,就不得不提到LHS查询和RHS查询: 1)如果查询目的是对变量进行赋值,则使用LHS查询 2)如果查询目的是 ...
- [小问题笔记(六)] 解决JS已执行,输出内容乱码问题. 顺带总结编码相关知识
问题: JS输出的内容出现了乱码.如图: 分析:既然年和月的数字可以正常显示,证明js加载和执行都没有问题 解决:把js引用处的编码方式改成当前页面编码一致.charset="gb2312& ...
- Vue.js 相关知识(动画)
1. 简介 Vue 在插入.更新或移除 DOM 时,提供多种不同方式的过渡效果,并提供 transition 组件来实现动画效果(用 transition 组件将需执行过渡效果的元素包裹) 语法:&l ...
- js 面试题正则相关
正则相关[i不区分大小写,g匹配全部数据] var str = "Hello word! I think word is good."; 1.替换str中的word为javascr ...
- Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试
我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...
- js和HTML结合(补充知识:如何防止文件缓存的js代码)
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(二) 使用html标签<script>可以把js嵌入到html页面中,让脚本 ...
- JS -- 一篇文章掌握RequireJS常用知识
本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...
随机推荐
- ORM基础1
1.增删改查 .models.类.object.all() 获取所有对象->select * from 表 2.models.类.object.get(id=1) 获取id为1的对象->s ...
- 代码审计之CVE-2018-7600-Drupal远程代码执行漏洞-Render API
今天学习一下Drupal的另一个漏洞,由于渲染数组不当造成的漏洞 poc: url:http://localhost/drupal-8.5.0/user/register?element_parent ...
- python类属性和实例属性(类变量和实例变量)
在类中,根据变量定义的位置不同,以及定义的方式不同,类属性又可以细分为以下三种类型: 类体中,所有函数之外:类属性(类变量) 类体中,所有函数内部,以"self.变量名"的方式定义 ...
- [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- 【原创】(一)Linux进程调度器-基础
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- IDEA debug下取消后续操作
有时进行测试时,不想后面的代码执行 具体应该怎么请看下文: 测试代码 public class demo { public static void main(String[] args) { Syst ...
- mybatis 源码分析中的知识点
1. resultMap 和 resultType 之间的优劣 resultMap: 在联合查询的时候, 可以不用写Join (因为在resultMap 的定义里面已经写了这些东西了<asso ...
- java编写杨辉三角
import java.util.Scanner; /* *计算杨辉三角: * 规律:两边都是1 * 从第三行开始,上一行的前一个元素+与其并排的元素等于下面的元素 * 例如: * 1 * 11 * ...
- VirtualBox桥接网络,设置虚拟机联网,连接VirtualBox虚拟系统中的数据库等
由于最近搭建一个项目自己的阿里云的服务器内存不足,自己笔记本使用VitrualBox电脑虚拟linux系统来搭建,把这次使用过程遇到的问题记录下来也能帮助遇到同样的小伙伴. 软件: VirtualBo ...
- win10下Java12环境变量设置
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 变量设置: 右键"我的电脑" ...