1、如何使用正则对象
在js中,使用正则对象主要有两种用法:
(1)RegExp类
test(str) :匹配指定的模式是否出现在字符串中.
如:reg.test(str);
如:邮箱,手机号时用这种方法,只需要告诉匹配不匹配。
exec(str) :返回匹配模式的字符串。注意:exec只匹配一次
药箱实现多次匹配必须要通过循环实现
(2)Sring类
search:匹配符合匹配模式的字符串出现的位置。从下标0开始
match :以数组形式返回匹配模式的字符串
replace:使用指定的内容替换匹配模式的字符串
split:使用匹配模式的字符串做为分隔符对字符串进行分割,返回数组。
2、exec方法和match方法的比较:
Exec方法是RegExp类下的方法
Match是String下的方法
Match方法直接返回一个数组
Exec方法需要使用循环反复调用
如果有子表达式,exec方法会将子表达式(下节课中讲到)的捕获结果放到数组对应的数组元素中。
3、总结:
RegExp类
test
exec
String类
search
match
replace
split
不同的情况下使用不同的方法:
我想知道邮箱格式、手机格式、IP格式合不合法,用test
如果想抓取网页中所有的手机号,使用exec或match
想替换掉网页中敏感词汇,用replace
4、定义字符集
[a-e]表示a到e这些字符中的某一个字符
[a-z]表示26个字母之一 也就是表示a-z任意一个字符
[A-Z] 表示大写的A-Z任意一个字符
[aeiou]表示aeiou这5个字符其中的某一个字符
[abcd]表示a 或b 或c 或 d
[a-zA-Z]表示大写、小写字母中的某一个字符
[1234] :表示 1 或2 或3 或 4
[0-9]表示0-9之间任意一个数字
[0-9a-z]表示0-9 a-z任意一个字符
[a-zA-Z0-9_-]表示大写、小写字母、0到9或是下划线或是中横线其中的某一个字符
[9-3][z-a]表示不能从大往小写,有语法错误
[^a-z] :表示匹配除了a-z之间任意一个字符
[^0-9] :表示匹配除了0-9之间任意一个字符
[^abcd] :表示匹配除a b c d 之外的任意一个字符
. :匹配除 “\n” 之外的任何单个字符
7、特别字符组成—* + ?
*表示前面那个单元出现0次或以上(任意次数)
+表示前面那个单元出现1次或以上
?表示前面那个单元出现0次或1次
特别字符组成— | . \
| 指明项之间的一个选择,可以匹配多个规则
.号表示匹配除换行符\n之外的任何单字符
\号是用来转义的 ,用于匹配某些特殊字符。
我们只想匹配字符‘.’,所以需要转义
需要的转义字符:
(
)
[
]
{
}
\
.
/
*
+
?
^
$
特别字符组成—^表示字符串的开始位置(托字符)。表示匹配输入字符串的结尾位置。
特别字符组成—{m}
{m} 表示前边单元严格出现m次
{m,}:其前一单元出现至少m次,至多不限制。
{m,n}:其前一单元出现至少m次,至多n次。
* 匹配前面的组件零次或多次 {0,}
+ 匹配前面的组件一次或多次 {1,}
? 匹配前面的组件零次或一次 {0,1}
正则表达式的构成—()小括号使用
()号:标记一个子表达式的开始和结束位置,也被称为模式单元。
作用:
提高子表达式优先级和从一个大的字符串里拆分小的字符串出来。
从大的字符串中拆分小的内容出来(模式单元)。
小括号模式单元 重复使用。
小括号计数方法:
横向:从左向右依次计数。
纵向:从外部向内部依次计数。
正则表达式的构成
组合字符
\d:表示数字[0-9] 匹配一个数字字符。
\D:表示非数字[^0-9]匹配一个非数字字符。
\w:表示字母、数字、下划线其中一个也就是匹配包括下划线的任何单词字符。[a-zA-Z0-9]
\W:非字母、数字、下划线也就是匹配任何非单词字符。[^\w]
\s:匹配任何空白字符 空格、制表符、换行符
\S:表示非空格也就是匹配任何非空白字符。
\1代表的是第一个单元应该在这个位置出现。如果写的是\3表示第三个单元,应该在这个位置出现。