JavaScript的正则表达式
来源:互联网 发布:淘宝情侣睡衣哪家好 编辑:程序博客网 时间:2024/05/17 15:41
JavaScript的正则表达式是Perl5正则表达式的一个子集;
一般来说,JavaScript的正则表达式的创建方式有两种:
- RegExp()构造函数创建正则表达式的模型对象;
- 大多数情况,都是通过一种特殊的
直接量
语法来创建。
比如我们创建一个匹配所有字母为s结尾的字符串。
- 第一种语法格式:new RegExp(“s$”);
- 第二种语法格式:/s$/;
我们来解释以下上面的这段代码的意思,所谓的直接量就是包含在“/”之间的所有字符。而$符号称为元字符
,它类似于一种命令,让这段代码匹配字符串的结尾部分。而这个s就是字面匹配
。
但是在实际操作中,光有字面匹配只能匹配字母和数字,对于表格,换行,换页,回车这些非数字非字面的字符,Javascript正则表达式也有对应匹配,这种匹配我们称之为非字面字符匹配
。它的特点在于前缀加有反斜杠‘\’。
如:
- \t 制表符
- \n 换行符
- \f 换页符
- \r 换页符
以上所述的匹配都是简单的直接量字符匹配
,也就是比较耿直对某单个字符比如abc,一个空格进行匹配。但是在实际操作中,我们很多时候是需要对一个类型的直接量字符的大量匹配。这时我们就需要字符类匹配
。
字符类匹配
定义:把多个直接量字符放入[]
中,就组成了字符类。字符类用于匹配其中所包含的任意字符。注意:^符号表示完全相反的匹配。
e.g:
- 匹配字符串“apple” 直接量表达:/apple/;
- 匹配字符串 ‘a’,’p’,’l’,’e’, 字符类匹配就是:/[aple]/
- 除此之外:/[^aple]/
- 特殊表达方式如,小字母全匹配:/[a-z]/,只要是拉丁字母和数组就全匹配:[a-zA-Z0-9]
- [a-zA-Z0-9]的简写形式是\w,
一般用于匹配英文单词
- [^a-zA-Z0-9]的简写形式是\W
- [0-9]简写形式是\d ,
一般用于匹配数学数字。
- 空格符号全匹配简写形式\s
重复匹配
又称之为贪婪匹配,用于同一字符类中的N个大批量字符串匹配;
e.g:
- /\w {10} / 匹配10个单词;
- /\w {3,100}/ 匹配3~100个单词;
- /\w {10,}/ 匹配10个以上单词;
- × 匹配0个以上
字符类
;(后缀) - ? 匹配一个可选
字符类
这个字符类可有可无
;(后缀) - 某某+ 匹配一个以上
字符类
;(后缀)
非贪婪匹配
暂无
正则表达式的选择
用 |
管道符表示,中文的语义我们称为 ”或 “,比方说:/China|US|Japan/,的直接量模型,我们可以匹配这三个单词中的任意一个。
再比分说: /\d{3} | \w{7}/就会匹配3个数字或者7个英文单词。
注意:管道符的匹配顺序是从左到右
,匹配到它对应的字符串时它就会收工,比如/a|ab/ ,当匹配到apple这个单词,你就别想它再去匹配able这个单词。
正则表达式的组合
用( )
圆括号将多个条件项组成一个单元匹配项。
我们可以通过多条例子来进行说明:
/java(Script)?/
这段表达式的意思就是至少匹配java,对于后面的Script呢?这个可以有,这个真没有。都无关紧要。- 子模式的抽取,比如我们希望匹配一段字符串有字母也有数字的字符串。但是我们的重点在于这后面的数字,所以我们可以这样定义一个模型
(/[a-z]+(\d)+/)
. - (?:……..)只组合。
指定位置匹配
- /^IBM$/ 这个表达式的意思就是匹配I开头,M结尾的单词。
正则表达式的匹配方法
当我们建立好一个正则表达式的匹配模型的时候,我们需要String的方法对目标字符串进行模型匹配。这里一共有四种匹配方式。
- 字符串.search(正则表达式 );
- 字符串.replace( 正则表达式,替换字符串 );
- 字符串.match( 正则表达式 );
- 字符串.split( 正则表达式 );
一:先说第一种.match()
方法:
在匹配到目标字符的时候:
它return的是一个数组形式,第一个元素是匹配到的第一个字符,第二个元素是索引值,第三个元素input进来的那堆字符文本。
如果没有匹配成功:
有的js版本返回的是-1 有的则是 null;
注意事项:它不是全局检索,它找到第一个匹配目标字符后就收工。
二:replace( )
方法
这个方法用于对源文件进行字符串替换改造,return出来的值就是改造后的源文件。
第一个参数模型,第二个参数就是用于替换的字符串。
这个方法可以通过加注修饰符设置全局匹配,和非全局匹配。
非全局匹配,比如:
example.replace(/Anhui/,”Wan”);
它就在源文件中,把它索引到的第一个Anhui这个单词替换成Wan之后就收工。
全局匹配,比如:
example.replace(/Anhui/g,”Wan”);
在我们添加了全局修饰符g之后,这个源文件中所有Anhui单词都会被替换成Wan.
- JavaScript 的正则表达式
- JAVASCRIPT的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- JavaScript的正则表达式
- JavaScript的正则表达式
- Javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- JavaScript的正则表达式
- javascript正则表达式的写法
- javascript的正则表达式匹配
- javascript正则表达式的基本知识
- javascript正则表达式的基本知识
- JavaScript正则表达式的用法
- JavaScript 常用的正则表达式
- 实验:C++实验3-个人所得税计算器
- bitbucket基本操作
- 映射/子转换、参数——kettle实战(4)
- sqlserver重启的行命令脚本,并且可以产生执行日志,可用于定时重启
- c++函数概念
- JavaScript的正则表达式
- Android SD卡创建文件夹/文件 SD卡写入内容 SD卡删除文件 计算SD卡文件大小,Android6.0+权限
- Java缓存(1)
- ios 如何设置启动图片LaunchImage
- NavigationView中head布局
- 【Java基础】线程笔记——synchronized
- 产生多路不同频率方波
- c#上Redis示例<二.读>
- FTP协议学习记录