博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript正则表达式基础知识汇总
阅读量:5917 次
发布时间:2019-06-19

本文共 2053 字,大约阅读时间需要 6 分钟。

一、创建正则对象:

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

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

2、使用正则直接量

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,}

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

var str = 'aaaaaa',

 str2 = 'aaaaaabc',
 pattern = /a+/,
 pattern2,
 pattern3;
    
 pattern.exec(str); //全部匹配
 
 pattern2 = /a+?/;
 pattern2.exec(str); //只匹配了字符串中str的第一个a
 
 pattern3 = /a+?bc/;
 pattern3.exec(str2); //全部匹配,匹配结果为aaaaaabc

5、选择,分组,引用

字符              含义 |            表示或,用于分隔选择 ()           子表达式(子模式),可以引用子模式匹配结果 (?:)         子表达式(子模式),可以引用子模式匹配结果,但是子模式匹配结果不出现在正则匹配结果集中 \n(n为数字)  引用对应的子模式匹配结果 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  5 pattern.exec(url); //匹配youhui子串 6 pattern2.exec(url); //全部匹配url变量值 

 

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

1、标志

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

2、方法

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

3、属性

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

 

转载于:https://www.cnblogs.com/sandea/p/3289891.html

你可能感兴趣的文章
HTML5新特性:元素的classList属性与应用
查看>>
python自动安装python2.7
查看>>
Linux+.NetCore+Nginx搭建集群
查看>>
Android 自定义ScrollView的滑动监听事件
查看>>
linux下yum命令出现Loaded plugins: fastestmirror
查看>>
String、StringBuffer、StringBuilder
查看>>
ava:Map借口及其子类HashMap三
查看>>
oracle 导入关键字说明
查看>>
springboot 1.5.x 使用tomcat8设置cookie的domain以dot开头报错
查看>>
字节、字、位、比特,这四者之间的关系
查看>>
expect实现scp/ssh-copy-id非交互
查看>>
服务链路追踪(Spring Cloud Sleuth)
查看>>
JVM 内存模型
查看>>
BZOJ离线版
查看>>
SpringCloud的Hystrix(一) 一个消费者内的两个服务监控
查看>>
P1622 释放囚犯
查看>>
为什么计算机网络有七层和四层之说,有什么相同点和不同点
查看>>
TCP和UDP
查看>>
eclipse双击变量高亮显示开关
查看>>
xss 多分类 优选 贝叶斯、逻辑回归、决策树
查看>>