js-day17
2017-12-14 本文已影响0人
Rosemarry丶
A.我今天学了什么
1.正则表达式
http://www1.qdfuns.com/tools.php?mod=regex(正则表达式调试工具)
有规律的/有规则的表达式,由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式描述语句。
正则表达式常用于在一段文本中搜索、匹配或替换特定形式的文本。如:词语出现频率统计、验证字符串是否符合邮箱格式、屏蔽一篇帖子中的限制性词语等
2.定义正则表达式
所有的单个大小写字母、数字都是一个正则表达式,用以匹配单个字符,这个字符与它本身相同,如:var regexp =/abc/;
正则表达式中有些字符有特殊的语法含义,是不能直接使用的,必须使用\进行转义后才能使用
. \ / * ? + [ ] ( ) { } ^ | $
3.字符集
• 正则表达式使用如下语法匹配一个范围内的字符
语法 含义
[abc] 匹配指定集合内的任一个字符
[^abc] 匹配不在指定集合内的任一个字符
[0-9] 匹配任一个数字
[a-z] 匹配任一个小写字符
[A-Z] 匹配任一个大写字符
[A-z] 匹配大写A到小写z的所有字符
4.预定义字符集
• 正则表达式中可以使用如下元字符引用来进行简化
语法 含义
\d 匹配一个数字
\D 匹配一个非数字
\w 匹配一个数字/字母/下划线
\W 匹配一个非数字/字母/下划线
\s 匹配一个空白符
\S 匹配一个非空白符
. 匹配除了回车和换行外的任何单个字符
5.数量词
• 正则表达式中可以使用如下特殊字符定义字符的出现频次--量词元字符
重复字符 含义
n? 匹配零次或一次字符n
n* 匹配零次或多次字符n
n+ 匹配一次或多次字符n
n{x} 匹配字符n出现x次
n{x,y} 匹配字符n出现x到y次
n{x,} 匹配字符n的出现次数>=x次
6.选择和分组
• 正则表达式使用如下语法定义子表达式 分组或选择
语法 含义
exp1|exp2 使用|进行条件选择
(exp1) 使用()指定分组--每个分组自动获得分组号如:1、2、3、的分组号
7.指定匹配位置
• 可以使用如下字符进行指定位置的匹配
重复字符 含义
^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配单词的边界
\B 匹配单词的非边界
?=x 匹配其后紧接x的字符串
?!x 匹配其后没有紧接x的字符串
8.创建RegExp对象
创建正则表达式对象有两种方法:
直接量语法:
var regexp =/abc/attribnnutes;
调用RegExp构造方法:
var regexp = new RegExp('abc','attribute');
9.RegExp的属性
RegExp对象具有如下属性:
属性名 说明
global (只读)RegExp对象是否具有g修饰符
ignoreCase (只读)RegExp对象是否具有i修饰符
multiline (只读)RegExp对象是否具有m修饰符
lastIndex 用于设置/获取下次匹配的起始位置(没有指定g修饰符的RegExp对象不能使用lastIndex属性)
source (只读)返回模式匹配所使用的文本
$1....$9 指代最近一次搜索中某个子表达式匹配的文本
10.用于模式匹配的String方法
replace方法
strObject.replace(regexp,'string');
对字符串中特定格式的子串进行替换,返回替换后的结果。
第一个参数既可以是一个固定的子串,也可以是一个正则表达式对象
match方法
strObject.match(regexp)
返回一个或多个子串、正则表达式的匹配
与indexOf()方法类似,但是它返回匹配的值,而不是匹配字符串所在的下标
search()
strObject.search(regexp)
返回第一次出现匹配指定正则表达式子串的下标,若没有匹配则返回-1
与indexOf()作用类似,但indexOf()不支持正则表达式
split()
strObject.split(regexp,[howmany])
使用一个指定的字符串或正则表达式,对原字符串进行拆分,返回拆得的子串数组。
若指定了howmany属性,则只返回拆得的前howmany个子串
regexp.test( txt );
console.log( RegExp.$1 ); //strong