一、创建正则对象:

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

JavaScript正则表达式基础知识汇总相关推荐

  1. 正则表达式基础知识汇总(java版)

    一.正则表达式基本组成和概念   Regular Expression 正则表达式    是用于描述一组字符串特征的模式,用来匹配特定的字符串.通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目 ...

  2. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

  3. 脑科学与脑电基础知识汇总

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 脑科学与脑电基础知识汇总 该部分汇总了社区分享的部分脑科学.EEG.fNIRS.BCI.人机交互等相关知识. 脑电与情绪 ...

  4. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  5. 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法

    前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 以下是博主整理的Linux知识专栏,喜欢的小伙伴可根据自己的需求自行订阅. Linux疑 ...

  6. JavaScript正则表达式-基础入门

    JavaScript正则表达式-基础入门 字符类,如 /w/ 为匹配任何ASCII字符组成的字符 重复, 如 /w{1,3}/ 为匹配一到三个单词 选择.分组和引用 指定匹配位置 修饰符 直接量字符 ...

  7. 计算机网络把许多什么连接在一起,计算机网络技术基础知识汇总习题

    计算机网络技术基础知识汇总习题 1.21世纪要实现信息化,就必须依靠完善的网络,这里的网络是指,向用户提供不同服务的 电信网络,有线电视网络和计算机网络三种网络.(电信网络,有线电视网络,计算机网络) ...

  8. 计算机公共基础知识论文,计算机等级考试二级公共基础知识汇总.doc

    计算机等级考试二级公共基础知识汇总.doc 计算机等级考试二级公共基础知识 第1章 数据结构与算法 1.1 算法 1.1.1 算法的基本概念 算法是指对解题方案的准确而完整的描述.简单地说,就是解决问 ...

  9. 网络基础知识汇总学习

    一.网线(双绞线)连接线的制作 双绞线制作有 568A 和 568B 两个标准,日常以 568B 标准较常用. 568B 标准按颜色排序为: 1- 橙白. 2- 橙.3- 绿白.4- 蓝. 5- 蓝白 ...

最新文章

  1. centos7.5 升级kernel内核版本
  2. 竞品调研时发现的Android新设计特性
  3. Simics系统模拟器
  4. serv-u 数据备份_如何使用用户数据脚本在EC2实例上安装Apache Web Server
  5. linux—命令汇总
  6. Mybatis 开发 dao 的方法
  7. 安卓虚拟键盘_微软双屏Surface Duo上的安卓应用体验:可瞬间变身笔记本电脑
  8. 西门子atch指令详解_西门子plc指令
  9. 【Linux应用】SAN(存储区域网络)技术
  10. 《java语言程序设计》泽勒一致性问题
  11. mzy git学习,删除文件(三)
  12. Vultr与阿里云结合自动换IP的解决方案
  13. gc overhead limit exceeded解决方案
  14. mac升级php后旧版本还在,老版本mac如何升级系统
  15. 计算机操作中常用的几种快捷方式,常用的30个电脑快捷操作技巧
  16. (2022)Springboot+vue3项目开发前后端分离书法图书管理Coun
  17. mysql数据库中查看数据库当前连接数
  18. CTFshow web3 菜鸡刷题记录
  19. Linux常用命令之搜索命令
  20. 访存控制信号——IO/M(M上方带横杠)

热门文章

  1. android sdk软件开发套件,ANDROIDSDK-SITARA
  2. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
  3. wordpress自适应表格_给WordPress添加自适应表格 让表格自适应屏幕
  4. mysql5.0镜像_Mysql5.0学习笔记(一)
  5. 【TensorFlow2.0】(7) 张量排序、填充、复制、限幅、坐标选择
  6. 心跳实现_真强啊!建议每一位Java程序员都读读Dubbo心跳设计的源码...
  7. pcl_filters模块api代码解析
  8. C++中string erase函数的使用
  9. gitlab如何克隆项目到本地进行开发,如何让webstorm项目右键菜单出现Git子菜单,右下角出现Matser分支
  10. Linux多线程与同步