一、区别‘对象’与‘数组’
数组: 数据的组合(同一类) ;
对象: 数据的集合(形式 key:value)
//数组
var num = [1,3,56,76,544,90]; // number类型的数组
// 对象;特点:以键值对 key : value 形式存在
var obj = {
name:"迪丽热巴",
age : 28,
gender:"女"
}
// 数组嵌套对象是最常见的
var data = [
{id:1,name:"boook1",date:"2020-10-10"},
{id:2,name:"boook2",date:"2020-11-10"},
{id:3,name:"boook3",date:"2015-03-10"},
{id:4,name:"boook4",date:"2011-09-10"},
{id:5,name:"boook5",date:"2023-10-10"}
]
同一类 不区分键值对 用数组
有键值对形式 用对象
二、随机数
是数学对象中的知识 Math对象
Math.random(); // 随机生成 0-1之间的小数 (0,1) [0,1) 0的概率很小
//进一法 小数部分只要有 就进位
Math.ceil(float) 3.00000000001 => 4
//舍一法 不管小数部分多大都不要了
Math.floor(float) 3.99999999 => 3
//四舍五入法 四舍五入
Math.round(float)
验证码的生成
实现验证码步骤
1.从哪里选取一个字符 数组中拿 数组有下角标 可以通过下角标拿值 但是数组操作麻烦 于是采用字符串,字符串类似数组
2.这个字符得是随机而来的 Math.random()
3.我生成几个长度的字符 Qsd5 Qjk76H 用循环处理
/* @ count 计数 几位数的验证码 */
function getRandom(count) {
var numberStr = 'qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM'
var size = numberStr.length; // length比角标大1
var codeNumber = ""; // 收集拼接而来的字符
for (var i = 0; i < count ; i++) {
var index = Math.floor(Math.random() * size);
codeNumber += numberStr[index]
}
var code = document.querySelector(".code"); // 操作DOM
code.innerHTML = codeNumber;
}
getRandom(4); //Q6t0
三、正则表达式
正确的表达方式 主要起到校验作用 检验用户输入是否合法
js研发之初就是做表单验证的
// 定义正则表达式1 => new方式
// 参数1 需要验证的规则
// 参数2 修饰符号 i忽略大小写; g全局匹配; m多行匹配。
var regexp1 = new RegExp("a",'i');
// 定义正则表达式2 => //
var regexp2 = /需要校验的规则/修饰符
var regexp2 = /b/igm
校验规则
符号 | 含义 | 案例 |
---|---|---|
^ | 开始、开头 | ^a 表示只能a开头 |
$ | 结束、结尾 | h$ 表示只能h结尾 |
[ ] | 表示范围,从中任取其一(注意:前面的unicode值小于后面值的unicode值) | [0-9] 表示数字0~9 [a-z] 表示字母a~z [7-9]正确的; [9-1] 不可以的; [a3589]可以的; 选择a/3/5/8/9任一 |
{n} | 其前面最近的表达式重复n次 | [0-9]{9} 0~9任选其一可以出现9次 |
{n,m} | 其前面最近的表达式最低出现n次最高出现m次 | [0-9]{6,9} 0~9任选其一可以出现6次到9次之间 [6,9] 包含6和9 |
{n,} | 其前面最近的表达式最低出现n次最高次数不限制 | [0-9]{6,} 最低出现6最高爱多少多少 |
\ | 转移字符 有一些特殊符号没办法正常显示 需要我们转义 | \- 等价于 - |
备注:unicode
是一种编码 与utf-8
同属编码类型
正则表达式的校验方法
// 字符串方法 用来验证 正则表达式 如果匹配成功 返回匹配成功的字符串 否则返回 null
String.match(RegExp);
// 正则表达式方式 用来验证字符串 如果匹配成功返回 true 否者返回 false
RegExp.test(String);
var reg1 = new RegExp('[0-9]');
var s1 = 'a8'
console.log('match',s1.match(reg1));
console.log("test",reg1.test(s1)); // true 解答:未规定开头结尾 那说明只要字符串中有数字就是对的 多少个无所谓
var reg2 = new RegExp('^[0-9]');
var s1 = 'a8'
console.log('match',s1.match(reg1));
console.log("test",reg1.test(s1)); // false 解答:规定开头 那说明只要字符串中不是数字开头就试错的
// 手机号码的正则表达式
var phoneReg = new RegExp('^1[356789][0-9]{9}$');
// 密码 6-18位 字母 数字 下划线 美元符 特殊符号
var passwordReg = new RegExp("^[a-zA-Z0-9_\-]{6,18}$"); // 注意使用转义字符\
var password = "qwert-";