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

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

一、创建正则对象:

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

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

 

2、使用正则直接量

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

 

二、正则表达式字符

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

特殊符号:

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

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

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

 

2、直接量字符

字符    匹配
o     NUL字符(u0000)
	     制表符(u0009)

     换行符(u000A)
v     垂直制表符(u000B)
f     换页符

     回车符
xnn   由十六进制数nn指定的拉丁字符,例如:x0A等价于

uxxxx 由十六进制数xxxx指定的Unicode字符,例如:u0009等价于	
cX    控制字符^X。例如:cJ等价于换行符

 

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_]
[] 在字符类中表示退格直接量

 

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为数字) 引用对应的子模式匹配结果

例:

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

 

6、位置字符

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

例:

1 var url = 'vip.etao.com/youhui.htm?drawCredits',
2 pattern = /youhui/,
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

更多相关:

  • 现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用“前台-中台-后台“的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够进行,为不影响软件开发、测试进度,消除等待浪费,因此引入了Mock服务。本文主要介绍的Mock工具是Wiremock(一种开源的测试工具,Mock工具有很多...

  • UE商城资源 Motion Symphony 运动匹配插件 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Motion Symphony 1.05 4.26运动交响曲插件 插件大小解压后:346M 资源大小共 2G 含官方文档 和官方使用视频教程(共100分钟 1920X...

  • 原文地址:http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html 正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设...

  • MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容: 主题层级分隔符 “/”: 表示层级关系 单层通配符 “+”: 订阅消息时使用,匹配一层主题如 a/+ 匹配诸如 a/b a/c 但是不能匹配 a/b/c,特...

  •  1.特殊字符 ^匹配输入字符串的开始位置$匹配输入字符串的结尾位置( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。?匹配前面的子表达式零次或一次...

  • 1. 三字母词 在C语言中有一种三字母词的说法,trigraph sequences,目前为止有九种三字母词,如下 ??=               #                  ??)            ]                  ??!           |         ??(      ...

  • 题目:   请你来实现一个 atoi 函数,使其能将字符串转换成整数。   首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。   当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组...

  • 联考考试考到了这个题,随机化40分,现在来秒掉它吧。   题意: 给一个字符串,求其中的一段,使得出现次数最多的字符与出现次数最少的字符的出现次数之差最大。 输入输出样例 输入样例#1: 复制 10 aabbaaabab 输出样例#1: 复制 3   我们定义$cnt[i][j]$表示区间$[1,i]$中,j出现的次数, 定义...

  • 本推文主要识别的验证码是这种:第一步: 二值化所谓二值化就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵。第二步: 文字分割为了能识别出字符,需要对要识别的文字图图片进行分割,把每个字符作为单独的一个图片看待。第三步: 标准化对于部分特殊的验证码,需要对分割后的图片进行标准化处理,...

  •   源字符串: a a 1 ~`!@#$%^&()_+-={}[];',.- + 编码后: a%20a%201%20~%60%21@%23$%25%5E&%28%29_+-=%7B%7D%5B%5D;%27,.-%20+   源字符串: 变 ~!@#¥%…………&()——+=-·{}:“;‘、《》?,。、-+A a 1 编码后:...