JavaScript-对象与数组的区别、随机数验证码、正则表达式

文章介绍了JavaScript中的基本数据结构——对象与数组的差异,包括数组的定义和对象的键值对形式。接着讨论了随机数的生成,如Math.random()函数及其在生成验证码时的应用。最后,文章深入讲解了正则表达式的创建和校验功能,举例说明了各种校验规则及其在表单验证中的重要性。
摘要由CSDN通过智能技术生成

一、区别‘对象’与‘数组’

数组: 数据的组合(同一类) ;

对象: 数据的集合(形式 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"}
]

  1. 同一类 不区分键值对 用数组
  2. 有键值对形式 用对象

二、随机数

是数学对象中的知识 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-";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李桥桉

支持一下作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值