JavaScript零基础入门——(七)当字符串赶上正则表达式

JavaScript零基础入门——(七)当字符串赶上正则表达式

欢迎你们回到咱们的JavaScript零基础入门,上一节课,咱们学习了几种经常使用的字符串处理的方法,但上节课咱们也说了,原生的字符串处理方法要有正则表达式的加持,才能发挥更大的威力。那么这节课,咱们来学习一下正则表达式。javascript

仍是那个好习惯,什么是正则表达式?正则表达式,实际上是舶来语,英文叫Regular Expression,简写为RegExp。其实从英文上能够看出来,直译叫规则表达式(台湾地区就是这么叫的),它是一种规则,用来规范或限制字符串的格式或内容,它是一种强大的字符串匹配工具,不过,也是一种正常人很难读懂的文字。java

在JS中,正则表达式有两种写法,一种是JS风格,一种是Perl风格,前者经过建立RegExp对象来实现,后者则是直接经过Perl语法来简写,咱们来看一下代码:正则表达式

//正则表达式

//JS风格
// new RegExp(expression[,option])
var re1 = new RegExp('a');
var re2 = new RegExp('a','i');

//Perl风格
// /expression/[option]
var re3 = /a/;
var re4 = /a/i;

既然是表达式,那就有他特定的表达方法,通常来讲,最经常使用的是[],方括号里边能够写取值范围,当字符串知足方括号中其中一个条件便可,同时,咱们也能够借助正则对象的test方法来验证,不过须要注意的是,test只要有部分符合要求,就会返回true。咱们来看一下代码:express

var re = /[abc]/;

var str = 'access';

console.log(re.test(str));//true

re = /[0-9]/;

str = 'No1';

console.log(re.test(str));//true

re = /[0-9a-z]/;

str = 'No1';

console.log(re.test(str));//true

其实咱们常常有一种需求,那就是排除部分不知足条件的,有点像咱们曾经说过的取反,那要怎么实现呢?你能想获得,正则表达式的开发者也能想获得,在方括号中,加入^就可能取得条件的补集了,咱们来看一下代码:数组

var re = /[^a-z]/;

var str = 'access';

console.log(re.test(str));//false

re = /[^0-9]/;

str = '123';

console.log(re.test(str));//false

re = /[^0-9a-z]/;

str = 'No1';

console.log(re.test(str));//true

有人会问,最后一个为何是true而不是false呢?其实缘由很简单,由于咱们写的是a-z,但字符串中包含了大写字母N,因此是true。那么问题来了,我要忽略大小写怎么办?固然你能够在写一个A-Z,有同窗嫌麻烦,没事,还记得上边咱们说过,正则表达式是有option的吗?咱们好像尚未用过呢,别急,咱们来说一讲。微信

option,主要是用来做为辅助条件,简单来讲,助攻一把。经常使用的option呢,其实只有两个,一个是i,一个是g。i,就是ignore的缩写,表示忽略大小写;g是global的缩写,表示全局匹配。全局匹配咱们下面再说,咱们来先来了解一下ignore,看代码:工具

var re = /[^a-z]/i;

var str = 'Access';

console.log(re.test(str));//false

re = /[^0-9a-z]/i;

str = 'No1';

console.log(re.test(str));//false

这时候又有同窗会说了,老师,每次老写这么长的表达式,好麻烦。不慌,正则表达式支持简写。正则表达式的简写,主要是借助转义字符,咱们来认识一下:学习

正则表达式中的转义字符
转义字符 释义
.(点) 任意字符
\d 任意数字,等价于{0-9]
\w 任意英文、数字或下划线,等价于{a-z0-9_]
\s 空白字符,如空格、tab等
\D 非数字,等价于[^0-9]
\W 除了英文、数字或下划线,等价于{^a-z0-9_]
\S 非空字符

有些心细的同窗可能会说,老师,若是我想输入3个数字两个字母要怎么办?没事,正则表达式提供了量词。什么是正则表达式的量词?它是用来描述匹配出现的次数,经常使用的量词有哪些呢?咱们来看一下:spa

正则表达式中的量词
表达式 释义
{n} 正好n次
{n,} 至少n次
{n,m} 最少n次,最多m次
* 任意次,至关于{0,}
+ 一次或更多,至关于[1,}
? 零次或一次,至关于{0,1}

说了这么多,有同窗说,老师,看不出对字符串处理发挥什么做用?好吧,那咱们就来讲一说。code

首先,咱们上节课说过,search能够返回指定字符出现的位置,可是咱们想要的多是判断有无包含字母或数字之类的,但字母又区分大小写,该怎么办?来看代码:

var str = 'aBc';

console.log(str.search(/a/));//0
console.log(str.search(/b/));//-1
console.log(str.search(/b/i));//1

上一节课咱们还讲过replace能够替换找到第一次的文本,可是若是我想批量替换怎么办?继续看代码:

var str = 'aBcaacc';
str=str.replace(/a/,'h');
console.log(str);//hBcaacc
str=str.replace(/c/g,'z');
console.log(str);//hBzaazz

好,这节课咱们的主要内容已经讲完了,更多好玩的例子请观看公众号的视频。不过,看归看,仍是要本身敲一敲的哈。好了,下一节课,咱们接着讲JavaScript的数组。

                                                                                                       

若是想跟着振丹继续学习,能够微信关注【振丹敲代码】(微信号:JandenCoding)

新博文微信同步推送,还附有讲解视频哦~

也可直接扫描下方二维码关注。

相关文章
相关标签/搜索