课前补充:
转义字符:\,反斜杠后面的字符取消掉原来的意思,转成文本
\\ 会输出一个\
\r :行结束
\n :换行
\t : 缩进 table键
应用:
在js中添加innerHTML的时候,等号右边是字符串,如果写入的代码有回车,浏览器会报系统解析错误。 那在每一行代码后面加一个\,再回车,就不会报错。
正则表达式作用:匹配特殊字符或有特殊搭配原则的字符最佳选择。
例如:邮箱名的正确输入,截取输入字符串中所有AABB格式的字符串。。
创建方式:
①直接量:var reg = / abc/;
即规则abc,
var reg = /abc/;
var str = 'abcdefg';
即 是否按照abc的规则,小写,紧靠着,顺序一致
显示结果为true,说明str中是含有reg规则的。
i 不考虑大小写;还有m,g
② new RegExp
new reg = new RegExp("abc");
new reg = new RegExp("abc","i");
注意:
有new
var reg = /abc/m;
var reg1 = new RegExp(reg);
结果:reg和reg1是不一样的
如果是没有new的话,abc属性就是一致。
var reg = /abc/m;
var reg1 = RegExp(reg);
修饰符
g 全局匹配,出现一组匹配的时候,还会继续匹配。
两个语句的使用:
var reg = /abc/m;
str = "abcdefg";
reg.test();//只返回true和false
str.match();//返回匹配的所有字符串
var reg = /^a/; //必须a在行级开头,空格符回车都不可以
正则表达式中的表达式
例:选出对应位数字,在0-9区间的
var reg = /[1234567890][1234567890][1234567890]/g;
var str = "12390ubdhgan87360aoqndi";
结果:
正则表达式的元字符和表达式是一个东西,元字符(Metacharacter)是拥有特殊含义的字符:
\w:[ 0-9A-z ]
\W:===[ ^/w ]除了[ 0-9A-z ]之外的都包括。在这里 ^表示非。
\d:[ 0-9]。
\D:===[ ^/d ],即除了[ 0-9]之外的都包括。在这里 ^表示非。
\s:所有的空白字符,
\S:===非空白字符。
空白字符包括 | |
---|---|
制表符 | \t |
回车符 | \r |
换行符 | \n |
垂直换行符 | \v |
换页符 | \f |
\b: 单词边界
\B:非单词边界 (单词边界在字符串里面可以看成空格 )
var reg = /\bcde/g;//字母边界+cde字母组合
var str = "abc cde fgh"; //只有第二组
结果显示:
正则表达式的量词
n+ :匹配任何包含至少一个n的字符串,这个变量可以出现1到无数次。
n*:匹配任何包含零个或多个n的字符,这个变量可以出现0到无数次。
n?:出现0到1个
{x}:选出出现x个的
{x,y}:x至y个n的序列的字符串
{x,}:包含至少X个n序列的字符串
n是一个变量,n+代表这个变量可以重复出现1次到无数次,n*代表{0到正无穷}
例子:
var reg = /\w+/g;
var reg1 = /\w*/g;
var str = "abcde";
结果显示
当 /\w*/g的时候,会在末尾出现一个空,因为g是全局范围的,搜索到一个符合规则的并不会停止,而是会继续向后搜索,\w规则是0-9A-z,在abcde字母串末尾,会有一个逻辑空,会继续匹配出来。
$ 以什么结尾
^以什么开头
var reg = /^abc$/g;//指以a开头后跟bc且以c为结尾
str = "abcabc";
结果是null,两组abc并不同时符合
正向预查
?=n 匹配任何其后紧接制定字符串n的字符串;
?!n 所有后面不跟着b的a
例:
找出后面有b的所有的a字符串,b仅仅作为筛选条件,但并不是我们匹配的目标。
var reg = /a(?=b)/g;
注意:正则表达式匹配遵循的原则是“贪婪匹配”,即能匹配出多个的时候,就不会匹配少的。
例如:var reg = /a+/g;
str = “aaaaaa”;
reg规则是匹配出1至多个的a,那么匹配出的就是全部的a,就是往多了去。
当 reg = /a+?/g;---------打破贪婪原则,会按照最少的来。