JS经典正则表达式笔试题汇总

前端之家收集整理的这篇文章主要介绍了JS经典正则表达式笔试题汇总前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例总结了JS经典正则表达式笔试题。分享给大家供大家参考,具体如下:

一.复习字符串的传统操作

如何获取一个字符串中的数字字符,并按数组形式输出,如

dgfhfgh254bhku289fgdhdy675gfh

输出[254,289,675]

分析:循环用charAt()的方法获取到每一个子字符串,判断他是不是在0~9之间,是就把他扔到准备好的数组里

='0'){ arr.push(str.charAt(i)); alert(arr); } } }

但是这样会输出[2,5,4,2,8,9,6,7,5]和我们想要的结果有点偏差,于是我们需要一个新的空的字符串,每次碰到是数字走if,碰到字符走else,走else的时候把之前那些数字存放到新的空的字符串里,然后通过push添加到数组,然后清空字符串,一以便下次重新存放

='0'){ result+=str.charAt(i); //注意添加方向不要反了 } else{ if(result){ arr.push(result); result=""; } } } alert(arr) }

还有个隐患:如果最后以数字结尾,则最后不会进入else,最后几位数字会读不到,因此for循环外面再添加一遍else里面的if循环

二.什么是正则,有什么用

正则:也叫做规则,让计算机能够读懂人类的规则

*前端哪些地方用到正则?

比如注册页面输入用户名,我们给定一套规则,判断他输入的对不对

*范围?

正则都是用来操作字符串的(即不要用他去操作对象什么的)

*怎么写?

正则也是一个系统对象,跟数组、json一样,也有个写法规则

简写 var re=//; //只写两斜杠,浏览器会认为是注释,所以尽量不要给他为空,注意两斜杠之间不要有引号

全称 var re=new RegExp(); //Reg是正则的简写,Exp是表达式的简写

大部分情况用简写,只有一种情况用全称写法:正则需要传参的时候

注:全称写法用到\时,需要两个\\,否则是转义字符

三.正则表达式的常用方法

正则去匹配字符串,如果匹配成功就返回真,匹配失败就返回假

写法:正则.test(字符串)

如:

弹出true

扩展:

检测一个字符串是不是全是数字

两斜杠之间要写什么呢?引入转义字符

\s(\S):空格(非空格)

\d(\D):数字(非数字)

\w(\W):字符(非字符) 字符包括字母、数字、下划线

2.search

正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1

search的写法:字符串.search(正则)

如:

正则中的默认:是区分大小写的

如果要不区分大小写,在正则的最后加标识i

完整写法:

3.match

正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

match的写法:字符串.match(正则)

比如上面例子要找出数字

输出2

为什么后面的不找了?

正则默认:正则匹配成功就会结束,不会继续匹配

如果想要全部查找,就要加标识g(全局匹配)

输出2,5

跟我们想要的结果还是有偏差,如果要连着找到,而不是一个个分开,则需要

但是个数不一定时怎么找,引进量词

量词:匹配不确定的位置

+:至少出现一次

就实现上面的效果

4.replace

正则去匹配字符串,匹配成功的字符去替换新的字符串

replace的写法:字符串.replace(正则,新的字符串)

如:

输出baa

敏感词过滤例子

但是如果有很多词要过滤,不能写成一整段,这样匹配不到,怎样把一个词一个词分开呢

|:或的意思

新的问题:所有敏感词都会替换成一颗星,怎样做到几个字几颗星呢?

replace()的第二个参数,可以是字符串,可以是回调函数

现在和上面那句话作用一样

回调函数的第一个参数,就是匹配成功的字符,即可以通过第一个参数的长度,来给他返回几颗星

四.正则表达式字符类

字符类:一组相似的元素(用[]表示[]的整体代表一个字符,()是分组和子项的意思)

[abc]

如o[usb]t--obt、ost、out

[a-z]、[0-9]

如id[0-9]--id0、id5

[^a]

如o[^0-9]t--oat、o?t、o t

例子:过滤标签

过滤掉<>(如

var re=/<[\w\W]+>/g; //中括号里是或的关系,也就是字符或非字符都有了,包括了斜杠,引号等

另一种做法: var re=/<[^>]+>/g;

五.正则表达式转义字符

.(点):任意字符 \.:真正的点

\s(\S):空格(非空格)

\d(\D):数字(非数字)

\w(\W):字符(非字符) 字符包括字母、数字、下划线

\数字:重复子项(\1:重复的第一个子项,\2:重复的第二个子项...)

例子:找某个字符串中出现最多的字符和它一共出现多少次

次数 var re=/(\w)\1+/g;

没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来像这样bbb...,hh

次数是'+index);

\b(\B):独立的部分(非独立的部分) 独立的部分(起始、结束、空格)

如:

独立部分应用举例

之前有用到用封装好的函数获取className

这个会有bug

用这个方法获取box1,只能获取到第一个

用正则来改写

六.量词

不确定的字符个数

量词:{}

{4,7} 最少出现4次,最多出现7次

{4,} 最少出现4次

{4} 正好出现4次

+是{}的简写,相当于(1,)

? 相当于{0,1} //出现0次或者1次

* 相当于{0,} //至少出现0次,可以没有

七.正则收尾

^:正则的最开始位置,表示起始的意思

$:正则的最后,表示结束的意思

例子:去掉字符串里的空格

例子:检测邮箱

八.前向声明和反前向声明

(?=) :前向声明

(?!):反前向声明

举例

输出:*bacad

如果改为

输出:ab*c*d

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

猜你在找的JavaScript相关文章