JavaScript正则表达式(小白收集用)
2015-12-23 22:08
691 查看
1.基本语法
创建正则表达式通过RegExp
var expresiion = / pattern / flags;
flags: g(全局模式)、i(不区分大小写)、m(表示多行)
2.pattern规则
①方括号:用于查找某个范围内的字符
[abc]:查找方括号内的任何字符
[^abc]:查找除了方括号内的任何字符
[0-9]:查找0到9的数字
(red|green|blue):查找任何指定的选项
②元字符:指的是拥有特殊含义的字符。与其他语言的正则表达式一样,模式中使用的所有元字符都必须转义。元字符包括:(
[ { \ ^ $ | ) ? * + . ] }
.(点):查找单个字符,除了换行和行结束符。要匹配所有的,使用[\s\S]
\w:查找单词字符(大小写字符、下划线和数字不准确,类似但不等于[a-zA-Z0-9_],这里的单词字符使用Unicode字符,所以俄文字符什么的也是单词字符,并不只是英文字符),大写的\W的表示查找非单词字符
\d:查找数字字符,\D则相反
\s:查找空白字符,\S相反
\b:匹配单词边界,\B相反。看实例吧,/\bm/
匹配 "moon" 中的 'm'
\n:匹配换行符
\f:换页符 \r:回车键
③量词
n+:匹配任何包含至少一个n的字符串
n*:匹配任何包含
n?:匹配任何包含零个或一个n的字符串
n{X,Y}:匹配X或Y个n的字符串
n{X,}:匹配X个n的字符串
n$:匹配以n结尾的字符串
^n:匹配以n开始的字符串
?=n:匹配任何其后紧接指定字符串n的字符串,?!n则相反
匹配的是除了this中的is
?:比较特殊,当该字符紧跟在任何一个其他限制符(
* + ? {n} {n,} {n,m}后面时,匹配模式是非贪婪的。非贪婪模式下尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能匹配所搜索的字符串。例如,对于字符串"oooo",/o+?/将匹配单个o,而/o+/匹配所有o
非获取匹配的意思是:不会把pattern加入捕获组中
(?:pattern):非获取匹配,
(?=pattern):非获取匹配,正向肯定预查
(?!pattern):非获取匹配,正向否定预查
(?<=pattern):非获取匹配,反向肯定预查,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”
(?<!pattern):非获取匹配,反向否定预查
④RegExp对象语法
属性:
global:是否具有标志g
ignoreCase是否具有不区分大小写标志 multiline是否具有多行标志
lastIndex:一个整数,标示下一次匹配的字符位置
source:正则表达式的源文本,返回字符串,按照字面量形式返回
方法:
exec():该方法是专门为捕获组而设计的。
exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null
返回的数组虽然是Array的实例,但包含两个额外的属性:index和input(所以你说Array和Object什么关系)
index:表示匹配项在字符串中的位置
input:表示用用正则表达式的字符串
在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式没有捕获组,则该数组只包含一项)
上例子
还有个要注意的点是:对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不设置全局标志的情况,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项
方法:test(),它接受一个字符串参数,在模式与该参数匹配的情况下返回true;否则返回false
创建正则表达式通过RegExp
var expresiion = / pattern / flags;
flags: g(全局模式)、i(不区分大小写)、m(表示多行)
2.pattern规则
①方括号:用于查找某个范围内的字符
[abc]:查找方括号内的任何字符
[^abc]:查找除了方括号内的任何字符
[0-9]:查找0到9的数字
(red|green|blue):查找任何指定的选项
②元字符:指的是拥有特殊含义的字符。与其他语言的正则表达式一样,模式中使用的所有元字符都必须转义。元字符包括:(
[ { \ ^ $ | ) ? * + . ] }
.(点):查找单个字符,除了换行和行结束符。要匹配所有的,使用[\s\S]
\w:查找单词字符(大小写字符、下划线和数字不准确,类似但不等于[a-zA-Z0-9_],这里的单词字符使用Unicode字符,所以俄文字符什么的也是单词字符,并不只是英文字符),大写的\W的表示查找非单词字符
\d:查找数字字符,\D则相反
\s:查找空白字符,\S相反
\b:匹配单词边界,\B相反。看实例吧,/\bm/
匹配 "moon" 中的 'm'
\n:匹配换行符
\f:换页符 \r:回车键
③量词
n+:匹配任何包含至少一个n的字符串
n*:匹配任何包含
n?:匹配任何包含零个或一个n的字符串
n{X,Y}:匹配X或Y个n的字符串
n{X,}:匹配X个n的字符串
n$:匹配以n结尾的字符串
^n:匹配以n开始的字符串
?=n:匹配任何其后紧接指定字符串n的字符串,?!n则相反
var str="Is this all there is"; var patt1=[code]/is(?! all)/gi;[/code]
匹配的是除了this中的is
?:比较特殊,当该字符紧跟在任何一个其他限制符(
* + ? {n} {n,} {n,m}后面时,匹配模式是非贪婪的。非贪婪模式下尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能匹配所搜索的字符串。例如,对于字符串"oooo",/o+?/将匹配单个o,而/o+/匹配所有o
非获取匹配的意思是:不会把pattern加入捕获组中
(?:pattern):非获取匹配,
(?=pattern):非获取匹配,正向肯定预查
(?!pattern):非获取匹配,正向否定预查
(?<=pattern):非获取匹配,反向肯定预查,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”
(?<!pattern):非获取匹配,反向否定预查
④RegExp对象语法
属性:
global:是否具有标志g
ignoreCase是否具有不区分大小写标志 multiline是否具有多行标志
lastIndex:一个整数,标示下一次匹配的字符位置
source:正则表达式的源文本,返回字符串,按照字面量形式返回
方法:
exec():该方法是专门为捕获组而设计的。
exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null
返回的数组虽然是Array的实例,但包含两个额外的属性:index和input(所以你说Array和Object什么关系)
index:表示匹配项在字符串中的位置
input:表示用用正则表达式的字符串
在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式没有捕获组,则该数组只包含一项)
上例子
var text = "mom and dad and daddy"; var pattern = /mom( and dad( and baby)?)?/gi; var matches = pattern.exec(text); alert(matches.index); //0 alert(matches.input); // "mom and dad and baby"; alert(matches[0]); //"mom and dad and bay"; alert(matches[1]); " and dad and baby"; alert(matches[2]); " and baby"; //前面有空格
还有个要注意的点是:对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不设置全局标志的情况,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项
方法:test(),它接受一个字符串参数,在模式与该参数匹配的情况下返回true;否则返回false
相关文章推荐
- Floodlight控制器实践——为模块加上Service和REST API,以及利用REST分析JSON输入、构造JSON输出
- javascript中常用语句
- 2015-12-23复习之JavaScript基础一
- 详解JavaScript的函数闭包
- JSP隐含对象介绍
- 每次都觉得很神奇的JS
- json和jsonp
- JS小知识点----基本包装类型和引用类型
- canvas+js绘制饼状统计图
- JS实现表单输入Enter键转换焦点框
- cJSON源码学习总结
- javascript生成表格增删改查
- JS链接页面
- javascript 表格增删改
- (mark 笔记)json数据解析
- BZOJ 1015: [JSOI2008]星球大战starwar 并查集
- js 动态生成宽度固定的table控件
- Extjs Widget
- jstl中格式化时间戳
- JavaScript中concat不起作用