正则表达式之量词(重复出现)?、*、+

1、?     符     匹配其之前紧邻的元素,不管该元素是否出现,都匹配成功!(注意该元素只能出现一次或者不出现都匹配成功)

现在来匹配color和colour,这两个单词都可以表示颜色的意思,他们的区别在于前面的单词比后面的单词多出一个u,那怎么通过一个正则匹配出这两个单词呢?代码如下:

var str="color";
alert(str.match(/colou?r/)); //输出:color
str="colour";
alert(str.match(/colou?r/)); //输出:colour

"?"元字符和之前介绍的元字符都不同,他只作用于之前紧邻他的元字符,因此来解读上面的正则colou?r的意思是:先是c,然后是o,然后是l,然后是o,然后是u?,紧接着是r;

u?是必然匹配成功的,有时他会匹配一个u,有时则不匹配任何字符,关键在于,无论u是否出现,匹配都是成功的;

下面来看一个例题:需要匹配7月6日的文本(July Sixth)的文本,其中月份可能写作Jul或者July,日期可能写成Sixth、6th、6。下面上代码:

第一种方法:

var str="July 6th";
alert(str.match(/^(July|Jul).(sixth|6th|6)/)); //输出:July 6th

第二种方法:

var str="July 6th";
alert(str.match(/^July?.(sixth|6(th)?)/)); //输出:July 6th

显然第二种方法更加的简洁!而且第二种方法?和()括号的结合,使得可以匹配的范围无限增大了,因为括号里面的表达式可以任意复杂。

2  *  符           匹配之前紧邻的元素,不管该元素是否出现,都匹配成功!(紧邻的元素可以出现任意多次,或者不出现)

与上面的?号相似*号也是作用于其之前紧邻的元素,而且两者都是不管前面紧邻的元素是否出现都匹配成功!

但是两者的不同点是:?匹配前面的元素,只出现一次或者不出现而*号匹配的前面的元素是出现多次或者不出现;

有如下代码:

var doc="<h1  ></h1>";//h1标签内有两个空格
alert(doc.match(/<[Hh][1-6]\s*>/)); //输出<h1  >  \s代表空格

上面这段代码的意思是允许h1与>之间存在任意多个空格,如果空格不出现,也不影响匹配的结果!

3  +  符          匹配之前紧邻的元素,但是该元素必须出现一次或多次,否则匹配失败!

与上面的*号类似,+号也是作用于其之前紧邻的元素,但是与*号不同的是+号之前的元素必须出现一次,或则匹配失败(两者都包括匹配多次的情况)

接下来看<hr size="   66    "> 这样的html tag,在最后的尖括号之前可以出现任意多个空格,此外在等号两边也可以出现任意多个空格,

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏超然的博客

ECMAScript 6 笔记(六)

  在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。

641
来自专栏柠檬先生

Sass 基础(五)

@if   @if 指令是一个SassScript,它可以根据条件处理样式块,如果条件为true返回一个样式块,反之   false 返回另一个样式块,在S...

2308
来自专栏C/C++基础

C/C++文字常量与常变量

在C/C++编程时,经常遇到以下几个概念:常量、文字常量、字面常量、符号常量、字符常量、常变量、字符串常量等,网上的资料描述的不尽相同,弄得大家云里雾里。本文将...

1332
来自专栏小詹同学

Python系列之——字符串格式化(xiaozhan is a boy of 22 years old.)

不知道小伙伴有没有遇到过字符串输出有格式要求的情况呢?今天小詹学习分享一波python的字符串格式化的方法。学以致用,首先我们得明确为什么要格式化字符串输出,以...

712
来自专栏个人分享

工程开发实用类与方法总结(未完)

1 .checkArgument(boolean) :   功能描述:检查boolean是否为真。 用作方法中检查参数   失败时抛出的异常类型: Illeg...

1093
来自专栏xx_Cc的学习总结专栏

iOS底层原理总结 - 探寻block的本质(二)

2884
来自专栏DannyHoo的专栏

OC中内存管理的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1403
来自专栏老九学堂

十七个C语言新手编程时常犯的错误及解决方式

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

1574
来自专栏前端进阶之路

JavaScript数据结构03 - 队列

队列是遵循FIFO(First In First Out,先进先出)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾...

951
来自专栏Web 开发

JavaScript的对象引用

在一个函数体内,var变量声明的变量,其作用域只在该函数体内,对于函数体外而言,是不可见的(废话)。

810

扫码关注云+社区

领取腾讯云代金券