当前位置: 首页 > 编程日记 > 正文

JavaScript正则表达式基础知识汇总

一、创建正则对象:

1、构造函数RegExp创建正则对象

1 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串

2、使用正则直接量

1 var pattern = /s$/; //建议这样写

二、正则表达式字符

1、反斜线\ 在正则表达式中表示转义序列

特殊符号:

^ $ . * + ? = ! : | \ / ( ) [ ] { }

如果想要在正则表达式中匹配它们,应该在他们前面加上反斜线,如:

var pattern = /\$/; //pattern匹配$符号

2、直接量字符

字符    匹配
\o     NUL字符(\u0000)
\t     制表符(\u0009)
\n     换行符(\u000A)
\v     垂直制表符(\u000B)
\f     换页符
\r     回车符
\xnn   由十六进制数nn指定的拉丁字符,例如:\x0A等价于\n
\uxxxx 由十六进制数xxxx指定的Unicode字符,例如:\u0009等价于\t
\cX    控制字符^X。例如:\cJ等价于换行符\n

3、字符类

字符         匹配
[...]       方括号内的任意字符
[^...]      非方括号内的任意字符
[0-9]       0-9之间的数字
[a-z]       小写的拉丁字母
[A-Z]       大写的拉丁字母
[0-9a-zA-Z] 数字和大小写拉丁字母

下面也属于字符类:

.    除换行符和其他Unicode行终止符之外的任意字符
\s   任意Unicode空白符 
\S   任意非Unicode空白符
\d   任意ASCII码数字,等同于[0-9]
\D   任意非ASCII码数字的字符,等同于[^0-9]
\w   任意ASCII码单词字符,等同于[a-zA-Z0-9_]
\W   任意非ASCII数字,等同于[^a-zA-Z0-9_]
[\b] 在字符类中表示退格直接量

4、重复字符类

贪婪的重复字符

字符      匹配
{n,m}  前一项至少n次,但不能超过m次
{n,}   前一项至少n次
{n}    前一项恰好n次
?      前一项0次或1次,等价于{0,1}
+      前一项至少一次,等价于{1,}
*      前一项0次或多次,等价于{0,}

非贪婪的重复匹配只需在贪婪的重复字符后面加上一个?(问号),且问号后没有其他表达式字符,否则非贪婪匹配忽略。例:

 1 var str = 'aaaaaa',
 2 str2 = 'aaaaaabc',
 3 pattern = /a+/,
 4 pattern2,
 5 pattern3;
 6     
 7 pattern.exec(str); //全部匹配
 8 
 9 pattern2 = /a+?/;
10 pattern2.exec(str); //只匹配了变量str中的第一个a
11 
12 pattern3 = /a+?bc/13 pattern3.exec(str2); //全部匹配,匹配结果为aaaaaabc

5、选择,分组,引用

字符        含义
|          表示或,用于分隔选择
()         子表达式(子模式),可以引用子模式匹配结果
(?:)       子表达式(子模式),可以引用子模式匹配结果,但是子模式匹配结果不出现在正则匹配结果集中
\n(n为数字) 引用对应的子模式匹配结果

例:

1 var pattern = /Java(?:Script)?(&VB\1)?/g,
2 str = 'JavaScript&VBScript';
3 
4 pattern.exec(str); //全部匹配,\1表示Script字符串
5 pattern.lastIndex = 0; //当正则对象拥有全局g标识时,如果同一个正则对象进行第二次匹配时,须将它的lastIndex重置为 0
6 pattern.exec(str); //第二次全部匹配

下面情况可能存在不能实现的期望:

var pattern = /(Java(?:Script))?&?(VB\2)?/,  //或者写成pattern = /Java(?:Script)|(VB\1)?/;
str = 'VBScript';
pattern.exec(str);  //不能匹配VBScript,\2表示为空,结果匹配VB子串var str2 = 'JavaScript&VBScript';
pattern.exec(str2);  //这样可以全部匹配//此例说明应该注意自己引用的子模式是否为空

6、位置字符

字符    匹配
^      字符串的开头
$      字符串的结尾
\b     位于\w(单词字符)与\W(非单词字符)的边界或位于一个ASCII单词字符与一个字符串的开头和结尾之间的边界
\B     非词语之间的位置
(?=p)  正前向声明,要求接下来的字符与模式p匹配,但是不包括匹配中的那些字符
(?!p)  反前向声明,要求接下来的字符不与模式p匹配

例:

1 var url = 'vip.etao.com/youhui.htm?drawCredits',
2 pattern = /\byouhui\b/,
3 pattern2 = /^vip\.etao\.com\/.+drawcredits$/i;
4 pattern.exec(url); //匹配youhui子串
5 pattern2.exec(url); //全部匹配url变量值 

三、正则对象标志,属性,及方法

1、标志

标志  含义
g    全局匹配
i    不区分大小写
m    多行匹配

2、方法

exec     接受一个字符串参数,返回由完全匹配和子表达式匹配结果组成的数组
test     接受一个字符串参数,返回boolean值
compile  编译正则表达式

3、属性

source     正则表达式的文本
global     是否拥有全局搜索标志g
ignoreCase 是否拥有标志i
multiline  是否拥有标志m
lastIndex  搜索匹配的开始位置(可读写)

数字正则:-?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?

转载于:https://www.cnblogs.com/yangjunhua/archive/2012/12/11/2812405.html

相关文章:

数据结构(严蔚敏)

说起为什么重新拿起这本书,着实非常惭愧。是因为面试的时候,第一个面试官面试完项目之后。第二面试官说我们就当聊聊天,考考数据结构,算法就好了。结果以一个问题就把我难住了,这个问题是:哈希表是什么&…

组队学习:学习者参考手册

学习者参考手册 作为希望参与组队学习活动的学习者,一定想了解有关本次活动的各种环节。我就通过这份手册来给大家介绍一下。 本手册一共分为四个部分,分别是活动角色划分,活动流程介绍、打卡环节介绍、角色职责介绍。 1. 大航海模型 航路…

软件测试培训适合什么人学习?

软件测试在互联网行业一直有着非常可观的发展前景,想要学习软件测试技术的人也越来越多,但不是所有人都可以学,都能学会的,小编下面就为大家详细的介绍一下软件测试培训适合什么人学习? 软件测试培训适合什么人学习?主要有以下几…

巧用组策略关闭危险端口

最直接的办法,把系统不用的端口都关闭掉,然后重新启动,如果杀毒软件还提示有漏洞攻击,你来找我. 注:关闭的端口有,135,137,138,139,445,1025&…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 8. 软间隔与支持向量回归

Datawhale南瓜书是经典机器学习教材《机器学习》(西瓜书)的公式推导解析指南,旨在让在学习西瓜书的过程中,再也没有难推的公式,学好机器学习。 航路开辟者:谢文睿、秦州开源内容:https://githu…

软件测试培训分享:如何划分bug的严重级别

软件测试工程师在工作中,最常见的就是遇见bug,那么所有的bug都是有轻重缓急的,如何划分bug的严重级别呢?本期软件测试培训分享教程就为大家做下详细的介绍。 软件测试培训分享:如何划分bug的严重级别?Bug的严重级别指的是软件缺…

理解 CSS 布局和块级格式上下文

本文的目的是介绍一些概念来帮你增强 CSS 码力。如标题所示这篇文章主要是讲块级格式上下文BFCBlock Formatting Context。你可能没听过这个术语但只要你曾经使用 过CSS 布局你就能明白它。理解 BFC 是什么、它如何工作、如何创建一个 BFC 是非常有用的这些能帮你更好的理解 CS…

Linux环境下用OpenJTAG实现Linux内核的源码级调试

1、通过U-boot将uzImage格式的内核加载到内存中(可以从Flash中读取,也可以从U盘、SD卡读取,还可以通过网络); 2、登陆到OpenOCD上,在内核中__turn_mmu_on打上断点,跳过MMU(Linux 的链…

如何在Windows中安装Python?

如何在Windows中安装Python? 1. Python的安装 官网下载:https://www.python.org/downloads/windows/ 点开上面的链接,会发现有很多版本。 首先看版本,64-bit是64位版本,32-bit是32位版本,你需要下载跟你…

Python培训教程分享:Python中选择结构是什么

越来越多的人开始报名学习Python技术,那么学习Python技术不是一两天就能学会的,本期小编为大家推荐的Python培训教程主要讲的是“Python中选择结构是什么”,下面来看看具体的内容,大家做好笔记哦。 Python培训教程分享&#xff1a…

UIWebView之获取所点位置图片URL

UIWebView有自己的UIResgure,如果我们手动加入自己的GestureRecognize将不能识别,如UILongPressGestureRecongnizer. 在浏览网页的时候,如果看到喜欢的图片,想把它保存下来如何办呢? 我们可以自己写一个程序来实现&…

【组队学习】【27期】青少年编程(Turtle)

青少年编程(Turtle) 论坛版块: http://datawhale.club/c/team-learning/34-category/34 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Turtle 学习目标 针对未接触过python、或者刚接触…

linux下activemq安装与配置

一、下载:apache-activemq-5.14.0-bin.tar.gzhttp://activemq.apache.org/activemq-5140-release.html二、安装activemq1、gz文件拷贝到/usr/local/src目录2、解压启动tar -zxvf apache-activemq-5.14.0-bin.tar.gzcd apache-activemq-5.14.0cd bin./activemq start…

参加软件测试培训需要注意哪些

零基础同学想要学习软件测试,通过自学是比较难的,那么很多人都会考虑软件测试培训机构,那么参加软件测试培训需要注意哪些问题呢?来看看下面的详细介绍。 参加软件测试培训需要注意哪些? 一、科学选择培训机构 要想学到最真实有用的软件测试…

Ubuntu12.04LTS添加broadcom 802.11g无线网卡驱动

Description: windows下无线网驱动可用,切换到Ubuntu下,无线网驱动失效。Reason: boardcom在Ubuntu下没有安装默认的驱动,需要自己手动配置install。 Solution: 1)有线连接网络,安装b43-fwcutte…

Android常用知识点回顾

开发过程中经常碰到一些问题或知识点,通过Baidu or Google 最终解决了问题。随后也对该知识点有了一定的掌握,可是过了一段时间再次碰到还是会忘记。所以该篇主要用来记录常见知识点。 山中何所有,岭山多白云。出自南北朝陶弘景,谨…

【组队学习】【27期】集成学习

集成学习 论坛版块: http://datawhale.club/c/32-category/32 开源内容: https://github.com/datawhalechina/ensemble-learning 学习目标 详细介绍了机器学习领域中最经典的算法并给出了相应的数学推导和代码,对于每个算法都进行了细致…

UI设计培训分享:2021年UI设计风格新风向标主要体现在哪些方面

UI设计在近几年的各大企业中显得尤为重要,那么随着近几年的发展,2021年UI设计风格新风向标主要体现在哪些方面呢?大家是否做过了解呢?如果没有,那么来看看下面的详细介绍就知道了。 UI设计培训分享:2021年UI设计风格新风向标主要…

《c陷阱与缺陷》之贪心法

在词法分析中,有条规则:每个符号应该包含尽可能多的字符,被称为“贪心法”或“大嘴法”。 K&R表述如下:如果(编译器的)输入流截止至某个字符之前都已经被分解为一个个符号,那么下一个符号将…

阿里云大数据计算服务MaxCompute(下篇)

关于阿里云大数据计算服务MaxCompute的详细内容: 阿里云大数据计算服务MaxCompute使用教程 (MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的…

【组队学习】【27期】李宏毅机器学习

李宏毅机器学习 论坛版块: http://datawhale.club/c/31-category/31 开源内容: https://github.com/datawhalechina/leeml-notes 学习目标 李宏毅老师的机器学习视频是机器学习领域经典的中文视频之一,也被称为中文世界中最好的机器学习…

Python培训分享:Python新版本中的6个新特性

Python在几年做了一个全面的升级,此次Python升级中有6个新特性,本期小编为大家介绍的Python培训教程就是关于介绍Python新版本中的6个新特性的,来看看下面的详细介绍。 Python培训分享:Python 3.10 有几个新的很酷的功能&#xff…

indows上的android开发环境软件架构5

(二)实验要求: ? 修改按下button 显示的内容中添加上自己的学号姓名; ? 添加一个按钮,按钮名称为“退出”,并且为这个按钮添加事件代码,使得点击这个按钮后退 出程序。事件代码如下: FullscreenActivity.…

日志服务Flink Connector《支持Exactly Once》

摘要:Flink log connector是阿里云日志服务推出的,用于对接Flink的工具,包含两块,分别是消费者和生产者,消费者用于从日志服务中读数据,支持exactly once语义,生产者用于将数据写到日志服务中&a…

【组队学习】【27期】Java编程语言

Java编程语言 论坛版块: http://datawhale.club/c/team-learning/33-category/33 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Java 学习目标 Java独特的面向对象的抽象类编程特点,广泛应用于应用…

UI培训分享:如何提升自己的UI设计能力

相信很多UI设计师在工作中经常会遇到瓶颈,那么如何提升自己的UI设计能力?是我们要思考的一个问题,下面小编就为大家分享—些建议。 UI培训分享:如何提升自己的UI设计能力 1、多看 国内知名的设计网站,比如站酷网、花瓣网、多看优…

微信小程序使用阿里巴巴iconfont字体图标

打开阿里巴巴iconfont官网(http://www.iconfont.cn/);把用到的字体图标加到项目里面; 进入到项目里面,选择font class方式来使用,如果没有生成过代码的同学点生成,已经有代码的直接复制代码;iconfont.pngiconfont.png4.浏览器新建页面&…

IIS6 MVC3 配置

用mvc3做了一个网站,重写了下URL,http://www.xxxx.com/news/details/54.html. 结果在iis上预览找不到页面,但是在vs下就没问题直接运行就没问题。 具体的原因应该是找不到映射。 所以需要在iis上添加映射。 添加MVC的解析: 右击II…

【组队学习】【27期】动手学数据分析

动手学数据分析 论坛版块: http://datawhale.club/c/team-learning/25-category/25 开源内容: https://github.com/datawhalechina/hands-on-data-analysis 学习目标 以项目为主线,通过边学,边做以及边被引导的方式&#xf…

参加UI培训后可以找什么工作

UI设计在近几年备受大家的关注,很多企业对UI设计这个岗位也显得尤为重要,很多人都想转型学习UI设计技术,大多数人选择参加UI培训机构进行系统学习,那么通过系统培训的同学参加UI培训后可以找什么工作呢?来看看下面的详细介绍。 参…