资讯专栏INFORMATION COLUMN

Javascript正则表达式详解(一)

zeyu / 3234人阅读

摘要:定义在中,定义一个正则表达式有两种方式,一种是直接量,另一种是使用构造函数。元字符在正则表达式的模式中,有一些字符是有特殊含义的,被称为元字符,如果要匹配元字符,则必须对其进行转义。正则表达式详解二

简介

先来一段介绍:

  

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

简单说就是:

  

它是对字符串执行模式匹配的强大工具。

Javascript中的正则表达式相较于其他语言来说实现的并不完整,但仍然是十分强大的,能够帮助我们完成绝大多数模式匹配任务。下面将一步一步详细介绍。

定义

在Javascript中,定义一个正则表达式有两种方式,一种是直接量,另一种是使用构造函数。

直接量

Javascript可以使用类似Perl的语法定义一个正则表达式

var r = /pattern/flags;

其中pattern是任何简单或复杂的正则表达式,flags是用以表达正则表达式行为的一个或者多个标识。

flags

g 表示全局(global)模式,即模式将被应用于所有字符串

i 表示不区分大小写

m 多行模式

来看几个例子

var r1 = /at/g; // 匹配字符串中所有"at"的实例

var r2 = /.ho/gi; // 匹配以"ho"结尾的三个字符的组合,不区分大小写
使用构造函数

Javascript中正则表达式的构造函数为RegExp,即Regular Expression的缩写,它接收两个参数,第一个为要匹配的字符串模式,另一个是可选的标识位。

如:

var r = new RegExp("hello", "g"); // 匹配字符串中所有的"hello"实例

有一点一定要注意,第一个参数是一个字符串,而不是正则表达式的直接量。

元字符

在正则表达式的模式中,有一些字符是有特殊含义的,被称为元字符,如果要匹配元字符,则必须对其进行转义。

这些元字符分别是:

( [ {  ^ $ | ) ? * + . ] }

例如:

// 如果要匹配"/user/name"这个字符串,正则表达式需要这样
var r1 = //user/name/;

var r2 = /.ho/; // 匹配".ho"这个字符串
关于使用构造函数定义

如果使用构造函数定义正则表达式,由于构造函数的第一个参数必须是一个字符串,在匹配元字符时,这将会导致双重转义。

例如:

var r1 = new RegExp("/user", "g"); // wrong

// 由于在字符串中需要转义为,所以,如果要匹配/user,正则表达式需要写为
var r1 = new RegExp("/user", "g");

所有元字符都需要进行双重转义

另外,还有一些预定义的特殊字符也被称为元字符

元字符 描述
. 查找单个字符,除了换行和行结束符。
w 查找单词字符。
W 查找非单词字符。
d 查找数字。
D 查找非数字字符。
s 查找空白字符。
S 查找非空白字符。
 匹配单词边界。
B 匹配非单词边界。
查找 NUL 字符。
查找换行符。
f 查找换页符。
查找回车符。
查找制表符。
v 查找垂直制表符。
xxx 查找以八进制数 xxx 规定的字符。
xdd 查找以十六进制数 dd 规定的字符。
uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

有一点需要特别注意:不管一个元字符代表多少种含义,单个元字符始终只匹配单个字符

元字符其实不必刻意花时间去记忆,等了解了全部的正则表达式使用方法之后,自然就知道哪些字符是有特殊含义的,也就知道了哪些时候需要转义了。

下面将陆续介绍正则表达式的使用方法。

Javascript正则表达式详解(二)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78125.html

相关文章

  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    jsbintask 评论0 收藏0
  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    muddyway 评论0 收藏0
  • Javascript字符串常用方法详解

    摘要:属性里的字符串类似于数组,都是一个一个字符拼凑在一起组成的,因此可以用属性取得字符串的长度字符串常用的一些方法返回字符串的第个字符,如果不在之间,则返回一个空字符串。如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引否则,返回。 字符串 字符串就是一个或多个排列在一起的字符,放在单引号或双引号之中。 abc abc length属性js里的字符串类似于数组,都是一个一个字...

    Wildcard 评论0 收藏0
  • 身份证号码的正则达式及验证详解(JavaScript,Regex)

    摘要:简言在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。身份证号码说明居民身份证号码,正确正式的称谓应该是公民身份号码。也有说法表述开头是外国人取得中国身份证号码的前两位编码,但本人并未得到证实。 简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。 showImg(https://seg...

    laznrbfe 评论0 收藏0

发表评论

0条评论

zeyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<