正则表达式一元字符与字符组

1、^   符   ---代表一行的开始

"category".match(/^cat/); //返回以c开头的紧接一个a,紧接一个t的文本数组!

2、$   符   ---代表一行的结束

alert("category".match(/ry$/)); //返回以y结尾,紧接着前面一个是r的文本数组   输出:ry

3、[........]    表示字符组用于匹配一串字符

如果我们需要搜索的单词是"gray",同时又不确定他是否写作"gray",这个时候就可以使用正则表达式结构体-[........]-字符组。他允许使用者在字符组内列出希望匹配的字符.

e表示匹配字符e,a表示匹配字符a,[ea]则表示能匹配a或者e,所以要匹配"gray"可以这样写:gr[ea]y,表示先找到一个g,紧接着一个r,然后是一个e或者a,紧接这最后一个是y。

注意:字符组中的内部的匹配情况,与外部的不一样,他表示的是或.

alert("gray".match(/^gr[ae]y/)); //返回以g开头,紧接着是一个r,在紧接着是一个a或者e,紧接着的最后是一个y   输出:gray

在一个字符组中可以列举任意多个字符,例如[123456]匹配1到6中的任意的一个数字,这个字符组,可以作为"H<123456>"的一部分,用来匹配<H1>,<H2>,<H3>等等。

3.1  字符组元字符

在字符组内部,字符组元字符   '-' (连字符)表示一个范围,如下,'<H[1-6]>'和'<H[123456]>'是一样的!

'[0-9]'和'[a-z]'是匹配常用的数字和小写子母的常用方式!也可以多重范围也是容许的,比如我们要匹配一个单词必须以字母数组下划线开头,代码可以这样写:

 alert("1gray".match(/^[a-zA-Z0-9_]*/)); //返回以字母(不区分大小写)、数字、下划线开头的文本数组   输出:1gray

3.2 排除型字符组

用排除型字符组[^......]取代字符组[..........],这个字符组就会匹配任何未列出的字符!

例如[^1-6],就会匹配除了1到6以外的任何字符,字符组的开头 "^" 表示排除的意思。和1中所讲的意思不同,这里"^"用于字符组表示排除的意思,如果单独使用表示一行的开始(以"^"紧接着的字符为开头也可以这样理解)。有如下代码:

alert(".gray".match(/^[^a-zA-Z0-9_]/)); //匹配以(排除a-z、A-Z、0-9之外的任意字符)开头的单个字符   输出:.

4   .   符       用于匹配任意字符,相当于一个占位符

元字符"."号是用来匹配任意字符的字符组的简便写法,如果我们在表达式中需要一个"匹配任意字符"的占位符,用点就很方便。

例如我们需要检索03/19/76、03-19-76或03.19.76,正则匹配代码如下:

第一种精确匹配方式:

03[/.-]19[/.-]76

第二种用"."号匹配方式:

03.19.76

这种方式除了能匹配我们需要的结果外,还匹配出了诸如:19 203319 76等额外的结果!

所以比较上面两种匹配规则,第一种更加的精确,但是更难读,也更难写,第二种更容易理解,但是不够细致!在我们选择匹配的方式时,需要对需要检索的文本有深入的了解,在按需选择匹配规则!

5  |  符

"|"符是一个非常简洁的元字符,他的意思是"或"。依靠它,我们能把不同的子表达式组合成一个总表达式,而这个总表达式又能匹配任意的子表达式

假如Bob和Robert是两个表达式,但Bob|Robert 能够同时匹配任意一个的正则表达式,在这样的组合,子表达式被称为"多选分支"。

回头来看3的例子,gr[ea]y的例子,有意思的是,它可以写作grey|gray,或者是gr(a|y);

注意:这里gr[a|e]y不符合我们的要求,在这里|和a、e一样只是一个普通的字符!

gr[ea]y和gr(e|a)y这两个例子可能会让人觉得多选结构和字符组本身没多大区别,但是注意,一个字符组只能匹配单词中的一个字母,而每个多选结构自身可能都是完整的正则表达式,可以匹配任意长度的文本!

6  -i    符忽略大小写

      E-Mail中header中的字段类型通常以大写字母开头,例如Subject和From,但是E-Mail标准并没有对大小写进行严格的规定,所以DATE和from也是合法的,如果用[Ff][Rr][Oo][Mm]取代From,这样能匹配所有不同类型的from,但是这样很不方便,这里有另外一种方法告诉egerp在比较时忽略大小写,也就是不进行区分大小写的匹配,就能忽略大小写字母的差异。

      该功能并不是正则表达式语言的一部分,确实很多工具软件提供的有用的特性,egerp的命令行参数"-i"表示进行忽略大小写的匹配,把-i写在正则表达式之前;

7   单词分界符

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫实战

Python数据类型之列表

定义一个列表的基本方式用中括号[],这也是列表的一个标志性符号,如果创建一个数字列表就是这样[1,2,3,4,5,6],记得中间用逗号隔开,而我们也可以用我们熟...

983
来自专栏互联网杂技

JavaScript 10分钟入门

简介 JavaScript是一门面向对象的动态语言,他一般用来处理以下任务: 1、修饰网页 生成HTML和CSS 生成动态HTML内容 生成一些特效 2、提供...

35610
来自专栏大前端_Web

javascript中的for in 和 in运算符

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

1262
来自专栏coder修行路

go基础之--函数和map

在整理函数之前先整理一下关于指针 指针 普通类型变量存的就是值,也叫值类型。指针类型存的是地址,即指针的值是一个变量的地址。 一个指针指示值所保存的位置,不是所...

2947
来自专栏Golang语言社区

Go 语言指针

Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语言指针。 我们都知道,变量是一种使用方便的占位...

3639
来自专栏Golang语言社区

Go语言指针

Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语言指针。 我们都知道,变量是一种使用方便的占位...

34312
来自专栏java一日一条

JavaScript 中 this 的使用技巧总结

在 js 中,this 这个上下文总是变化莫测,很多时候出现 bug 总是一头雾水,其实,只要分清楚不同的情况下如何执行就 ok 了。

813
来自专栏小白的技术客栈

Python内置数据结构之字典(完整版)

今天主要讲解上次未完成的内置数据结构-字典。小白这几天比较忙,忙的忘记了健身及写作,特发此文以作补偿。 Python字典简介 Python内置了字典:dict的...

3634
来自专栏开源优测

[快学Python3]Sets(集合)

概述 set是Python的基本数据类型,它有可变集合(set()) 和不可变集合(frozenset)两种,在本节中,我们主要讲解set的使用方法。set和d...

2867
来自专栏阿凯的Excel

Python读书笔记20(函数与变量类型)

上期和大家分享了函数如何返回值。其中有个案例是实现知道边长输出正方形面积。 我们来回顾一下! ? 假如我们有一个L的列表,能否批量实现开平方的运算并赋值给新的列...

3564

扫码关注云+社区

领取腾讯云代金券