ES5、ES6自学笔记( 七 )


正则表达式
特点:
灵活性、逻辑性和功能性非常的强 。可以迅速地用极简单的方式达到字符串的复杂控制 。对于刚接触的人来说,比较晦涩难懂 。比如: ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$实际开发,一般都是直接复制写好的正则表达式. 但是要求会使用正则表达式并且根据实际情况修改正则表达式. 比如用户名: /1{3,16}$/ 创建正则表达式
在中,可以通过两种方式创建一个正则表达式 。
创建正则表达式时不管是数字型还是字符串型都不需要加引号
通过调用对象的构造函数创建
var 变量名 = new (/表达式/);
通过字面量创建
var 变量名 = /表达式/;
// 一种是通过对象创建var regexp1 = new RegExp(/123/);console.log(regexp1);// 一种是通过字面量创建var regexp2 = /123/;console.log(regexp2);
测试正则表达式
test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串 。
// 使用test()方法验证var yz = regexp1.test(123);// trueconsole.log(yz);
特殊字符
一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、+ 等 。
特殊字符非常多,可以参考:
边界符
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符 。
如果 ^ 和 $ 在一起,表示必须是精确匹配 。
// 边界符 ^ $ var rg = /abc/; // 正则表达式里面不需要加引号 不管是数字型还是字符串型// /abc/ 只要包含有abc这个字符串返回的都是trueconsole.log(rg.test('abc'));console.log(rg.test('abcd'));console.log(rg.test('aabcd'));console.log('---------------------------');var reg = /^abc/;console.log(reg.test('abc')); // trueconsole.log(reg.test('abcd')); // trueconsole.log(reg.test('aabcd')); // falseconsole.log('---------------------------');var reg1 = /^abc$/; // 精确匹配 要求必须是 abc字符串才符合规范console.log(reg1.test('abc')); // trueconsole.log(reg1.test('abcd')); // falseconsole.log(reg1.test('aabcd')); // falseconsole.log(reg1.test('abcabc')); // false
字符类
字符类表示有一系列字符可供选择,只要匹配其中一个就可以了 。所有可供选择的字符都放在方括号内 。
工具网站:
替换
() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式 。
.(/,)
第一个参数: 被替换的字符串 或者 正则表达式第二个参数: 替换为的字符串返回值是一个替换完毕的新字符串
表达式参数:/表达式/[]
(也称为修饰符) 按照什么样的模式来匹配. 有三种值:
var text = document.querySelector('textarea');var btn = document.querySelector('button');var div = document.querySelector('div');btn.onclick = function() {div.innerHTML = text.value.replace(/激情|gay/g, '**');}
变量
变量是松散类型的,意思是变量可以用于保存任何类型的数据 。每个变量只不过是一个用于保存任意值的命名占位符 。有三个关键字可以声明变量:var、let、const 。其中var在的所有版本中都可以使用,而let和const只能在中使用 。
const: 声明常量
var