Open mishe opened 7 years ago
前段时间,在面试一个资深前端开发时,偶然想到了一道面试题:用一个正则表达式来计算一个字符串中有多少个英文字符。
var str='1a2b3c4d5ef'; str.search('a')
var str=‘1a2b3c4d5ef’; str.indexOf('a')
var str=‘1a2b3c4d5ef’; str.match('a')
var str='1a2b3c4d5ef', num=0; for(var i=0;i<str.length;i++){ if(str.charAt(i)=='a'){ num+=1; } }
var str='1a2b3c4d5ef'; str.split('a').length-1
var str='1a2b3c4d5ef'; str.split('a').match(/a/ig).length
for/while等循环可以实现
str.split 同样可以实现,str.match也可以实现,两者基本没有差别,都是依靠正则表达式的能力;
那么正则表达式要怎么写呢?
其实很简单,英文的区间是a-z,那么只要能选中每一个英文就好,正则是/[a-z]{1}/,选择后,需要记录,那么变成了/([a-z]{1})/,英文是区分大小写的/([a-z]{1})/i,需要全局查找匹配,最终的正则:/([a-z]{1})/ig
首先把面试题简化下
怎样在一个字符串中找到指定的字符
str.search
str.indexOf
str.match
怎样在一个字符串中找到指定字符的个数
for/while等循环
str.split
str.match
怎样在一个字符串中找到英文字符(特定区间的条件)的个数
for/while等循环可以实现
str.split 同样可以实现,str.match也可以实现,两者基本没有差别,都是依靠正则表达式的能力;
那么正则表达式要怎么写呢?
其实很简单,英文的区间是a-z,那么只要能选中每一个英文就好,正则是/[a-z]{1}/,选择后,需要记录,那么变成了/([a-z]{1})/,英文是区分大小写的/([a-z]{1})/i,需要全局查找匹配,最终的正则:/([a-z]{1})/ig