javascript 正则表达式基础知识汇总
正则表达式:对字符串中的信息实现查找、替换和提取操作。(不支持注释和空白,必须写在一行内)
正则表达式的创建:包含在一对斜杠之间的字符(直接量语法)
例如:
var pattern = /s$/; // 创建一个正则来匹配所有以字母s结尾的字符串,并赋值给pattern
一 、字符类:
将直接量字符单独放进方括号内就组成了字符类。
一个字符类可以匹配它所包含的任意字符。
正则表达式的字符类:
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII字符组成的单词 等价于[a-zA-Z0-9]
\W 任何非ASCII字符组成的单词 等价于[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符
\d 任何ASCII数字 等价于[0-9]
\D 任何非ASCII数字 等价于[^0-9]
[\b] 退格直接量(特例)
例如:/[a,b,c]/ 表示和字母a,b,c中的任意一个都匹配
/[\s\d]/ 表示匹配任意空白字符或者数字
二、重复:
用以表示指定字符重复的标记
正则表达式的重复字符语法:
{n,m} 匹配前一项至少n次,但不超过m次
{n,} 匹配前一项n次或者更多次
{n} 匹配前一项n次
? 匹配前一项0次或者1次,也就是前一项是可选的,等价于{0,1}
+ 匹配前一项1次或多次,等价于{1,}
* 匹配前一项0次或多次,等价于{0,}
例如:/\d{2,4}/ 匹配2~4个数字
/\w{3}\d/ 精确匹配3个单词和一个可选数字
三、选择、分组和引用
匹配程序:从左到右,如果左边的匹配项匹配了,就自动忽略右边的匹配项(即使可以产生更好的匹配)
① | 用于分隔供选择的字符
例如: /ab|cd|ef/ 可以匹配字符串“ab”,"cd"或者“ef”
/\d{3}|[a-z]{4}/ 匹配3位数字或四个小写字母
② ()
作用一:把单独项合成子表达式
作用二:在完整的模式中定义子模式
当一个正则表达式成功的和目标字符串相匹配时,可以从目标字符串中抽出和圆括号中的子模式相匹配的部分。
例如:
/[a-z]+\d+/ 检索一个或多个小写字母后边跟着一个或多个数字
如果我们关心的是每个尾部的数字,则可以把模式的数字部分放到括号(/[a-z]+(\d)/),这样就可以从检索到的匹配中抽取数字了
作用三:允许在同一正则表达式的后部引入前面的子表达式
实现方法:在字符\后加一位或多位数字(这个数字指定了带圆括号的子表达式在正则表达式中的位置)
例如:\1 引用的是第一个带圆括号的子表达式
注: 位置以参与计数的左括号位置为准;
正则表达式不允许用双引号括起的内容中有单引号,反之亦然。
总结:
| 选择,匹配的是该字符左边的子表达式或右边的子表达式
(...) 组合,将几个项组合成一个单元
(...?) 只组合,把项组合到一个单元,但不记忆与该组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式,组索引是从左到右的左括号数,(?: 这个形式的分组不参与索引编码
四、指定匹配的位置:
锚 : 指定匹配发生的合法位置
^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配一个单词的边界 (位于\w和\W之间的位置)
\B 匹配非单词边界的位置
五、修饰符:
修饰符是放在//之外的,不会出现在两条/线之间
i 不区分大小写
g 全局匹配,找到所有匹配,而不是找到第一个之后就停止
m 多行匹配
六、 用于模式匹配的String对象的方法
方法一: search() 检索与之匹配的位置
参数:一个正则表达式
返回:第一个与之匹配的子串的起始位置,如果找不到匹配的子串,返回-1
例如:
<script>
"javascript".search(/script/i); //返回值为4
</script>
注:① 如果search()的参数不是正则表达式,则会通过RegExp构造函数将他转换成正则表达式
② search()不支持全局检索
方法二: replace() 执行检索与替换操作
参数:第一个-->正则表达式
第二个-->要进行替换的字符串(也可是一个函数,该函数能动态的计算替换字符串)
注:① 支持g,
正则表达式中设置了g:所有与模式匹配的子串都将替换成第二个参数指定的字符串
正则表达式中没设置g:只替换所匹配的第一个子串
② 如果第一个参数不是正则,而是一个字符串时,replace()将直接搜索这个字符串
例如:将所有不区分大小写的javascript都替换成大小写正确的JavaScript
<script>
var str = "javascript,javascript,javascript,javaScript";
alert(str.replace(/javascript/gi,"JavaScript")); //JavaScript,JavaScript,JavaScript,JavaScript
</script>
方法三 : match()
参数:正则表达式
返回:由匹配结果组成的数组
支持g
实例一:
<script>
var math = "1 plus 2 equals 3".match(/\d+/g);
console.log(math); // ["1", "2", "3"]
console.log(typeof math); //object
</script>
实例二:
<script>
var math = "1 plus 2 equals 3".match(/\d/);
console.log(math); // ["1", index: 0, input: "1 plus 2 equals 3"]
console.log(typeof math); //object
</script>
注意:
给字符串的math()传入一个非全局的正则表达式:
匹配情况:只检索第一个匹配
返回值:数组
数组第一个元素:所匹配的字符串
数组第二个元素:正则表达式中用圆括号括起来的子表达式,返回的数组有两个属性-->index和input
方法四: split()
返回值:数组
分隔符:split()的参数
例如:
<script>
var str= "1,2,3,4,5,6,7,8".split(',');
console.log(str); //["1", "2", "3", "4", "5", "6", "7", "8"]
</script>
参数是正则表达式时(可以指定分隔符,允许两边可以留任意多的空白符)
返回:用以调用它的字符串拆分为一个子字符串组成的数组
<script>
var str= "1,2,3,4,5,6,7,8".split(/\s*,\s*/); //允许两边留任意多的空白符
console.log(str); //["1", "2", "3", "4", "5", "6", "7", "8"]
</script>
七、RegExp 对象
RegExp()构造函数:
参数:两个字符串参数
第一个:正则表达式的主体部分(两个斜杠之间的文本)
第二个:(可选)指定正则表达式的修饰符(g,i,m这三者或这三者的组合)
注意:无论是字符串直接量还是正则表达式都使用/字符作为转译字符的前缀
例如:
var zipCode = new RegExp('\\d{5}','g'); //全局匹配字符串中的5个数字,注意这里是//而不是/
javascript 正则表达式基础知识汇总的更多相关文章
- JavaScript正则表达式基础知识汇总
一.创建正则对象: 1.构造函数RegExp创建正则对象 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串 2.使用正则直接量 var patte ...
- javascript之正则表达式基础知识小结
javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要 ...
- jquery基础知识汇总
jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...
- 快速掌握JavaScript面试基础知识(三)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- 快速掌握JavaScript面试基础知识(二)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- javascript的基础知识及面向对象和原型属性
自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...
- JavaScript 正则表达式基础语法
前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...
随机推荐
- Windows2008 R2修改3389端口教程
默认的3389端口有必要修改么,这个端口,我建议是修改一下为好,最好改大一点,这样安全性会高一点,但然面对高手级攻击,就没有用了,通常高手级过NMAP扫描一个你的IP地址,端便全然显现出来了,好了,下 ...
- Linux 关闭防火墙命令
用linux自己来访问web是可以的 比如 192.168.2.20就可以访问本机的相关页面 用192.168.2.20/phpmyadmin就可以访问数据库相关内容 可是,当别的局域网的电脑想访问时 ...
- 4Web镇之旅:开始链接
为了将网页发布到web上,需要一个全日工作的网络服务器,最好的方法是找到一家主机代理商. 域名是用来定位网站的第一无二的名字. 网页的最顶层目录就是根目录.在Web服务器中,因为根目录中的东西有可能在 ...
- Linux - full name of command
pwd: print working directory cd: change directory ls: list ps: process status su: switch user mv: mo ...
- nginx proxy_pass
在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理 ...
- css中IE6fix问题
.g-popup-mask, .g-popup-box { position:fixed; top:0; left:0; z-index:10000; _position:absolute; _top ...
- 权限管理:(RBAC)
一般做正规的权限管理程序基本就是以下M表模式: 例1:在页面显示管理者的权限,并可以修改的管理界面 数据库表如下: 管理界面(附ajax): <body> <?php include ...
- WCF TCP 错误代码 10061: 由于目标计算机积极拒绝
表象是连不上服务端,本质原因多种多样,网络硬件问题导致的网络不通.服务本身问题或没有启动.或者防火墙阻隔等等不一而足. 1.ping看服务端能否ping通: 2.telnet ip地址 端口 ,看看是 ...
- nusoap
PHP SOAP服务器 用PHP和NuSoap来建立SOAP服务器非常容易.基本上,你只要写出你想要暴露给你的Web services的函数,然后用NuSoap去注册它们就可以了.OK,另外还需要两步 ...
- Tinyxml的简单应用
参考文章: 1-> http://www.cnblogs.com/phinecos/archive/2008/03/11/1100912.html 2-> http://blog.csdn ...