前端学习之js语法、DOM 操作、正则

2017-03-09  本文已影响54人  静持大师

JS 语法

Javascript 由三部分组成

数据类型


简单数据类型介绍
数据类型转换
    var num1 = Number(“18”);    // 有非数字字符会出现NaN
    parseInt() 和 parseFloat()(译为取整和取浮点数)
    var bool = Boolean(“1111”); // bool为true;
数组的操作
// Instanceof:  是一个关键字。 判断A是否是B类型。
布尔类型值 = A Instanceof B ;

//HTML5中新增    判断是不是数组
Array.isArray() 

// 把别的类型数据,转为字符串
// 把Array转换成字符串,每一项用,分割
// null和undefined没有toString方法,所以转换的时候用String()函数
toString()  

//返回数组对象本身  
valueOf()       

// 根据每个字符把数组元素连起来变成字符串, 变量可以有可以没有。不写默认用逗号分隔,无缝连接用空字符串
字符串  =  数组.join(变量); 

//在数组最后面插入项,返回数组的长度
push()  
 
//删除数组中的最后一项,返回最后一项
//被删除的元素  =  数组1.pop();
pop()    

//在数组最前面插入项,返回数组的长度
unshift()  

 //删除数组中的第一个元素,返回被删除的元素
shift()     
   
//翻转数组
reverse()   

//给数组排序,返回排序后的数组。如何排序看参数
sort();   
从小到大排序后的数组  =  数组1.sort(function(a,b) {
  return a-b;
});

//把参数拼接到当前数组
// concat()  
新数组 = 数组1.concat(数组2);

//从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
slice() 
新数组 = 数组1.slice(索引1,索引2);

//删除或替换当前数组的某些项目,参数
splice()
start,deleteCount,options(要替换的项目)
新数组 = 数组1.splice(起始索引,结束索引,替换内容);

//如果没找到返回-1
indexOf()、lastIndexOf()   

DOM 操作

DOM访问关系

DOM节点操作(重点)

DOM 属性操作

正则

正则的组成

每一个正则表达式都是由元字符和修饰符组成的

什么是[元字符]:在//之间具有意义的一些字符

具有特殊意义的元字符

var reg = /^0.2$/;//->以0开头,以2结尾,中间可以是除了\n的任意一个字符
console.log(reg.test("0.2"));//->true
console.log(reg.test("0-2"));//->true
console.log(reg.test("0s-2"));//->false
//
reg = /^0.2$/;//->以0开头,以2结尾,中间是.的字符串;
console.log(reg.test("0.2"));//->true
console.log(reg.test("0-2"));//->false

- `()`: 功能一:分组 ->把一个大正则本身划分成几个小的正则
- ```
var reg1 = /^\d+zhu\d+$/;
var reg2 = /^(\d+)zhu(\d+)$/;
//匹配
console.log(reg1.test("2zhu3"));//true
console.log(reg2.test("2zhu4"));//true
//捕获
console.log(reg1.exec("2zhu3"));//["2zhu3", index: 0, input: "2zhu3"]
console.log(reg2.exec("2zhu4"));//["2zhu4", "2", "4", index: 0, input: "2zhu4"]
代表出现次数的量词元字符

var reg = /^\d+$/;
console.log(reg.test("2015"));//->true
// 一个简单的验证手机号的正则:11位数字,第一位是1
var reg = /^1[3|4|5|7|8]\d{9}$/;//第一位以1开始,第二位可以是34578中的任意一位,后面再加9个数字;
console.log(reg.test("12345678901"));//false
console.log(reg.test("13856487589"));//true
console.log(reg.test("12114567895"));//false


####元字符的应用
#####`[]`整括号的注意
- 在整括号中出现的所有的字符都是代表本身意思的字符(没有特殊的含义,\d这种特殊)
- ```
// 以 . 开头,后面跟上至少一个数字
var reg = /^[.]\d+$/;
console.log(reg.test("46545"));//->false
console.log(reg.test(".89"));//->true
// 以 . 开头,中间至少一个数字,以 + 结尾
var reg1 = /^[.]\d+[+]$/;
console.log(reg1.test("46545"));//->false
console.log(reg1.test(".89+"));//->true
//
var reg2 = /^[.]\d+0[\d+]$/;
console.log(reg2.test("46545"));//->false
console.log(reg2.test(".465045"));//->true 如果是465045就是false
console.log(reg2.test(".890+"));//->true

var reg1 = /^[12]$/;//->1或者2中的一个
console.log(reg1.test("12"));//false
console.log(reg1.test("1"));//true
console.log(reg1.test("2"));//true
// 1、2-6中的一个、8 三个中的一个
var reg2 = /^[12-68]$/;
console.log(reg2.test("128"));//false
console.log(reg2.test("138"));//false
console.log(reg2.test("158"));//false
console.log(reg2.test("1"));//true
console.log(reg2.test("3"));//true
console.log(reg2.test("5"));//true
console.log(reg2.test("8"));//true
console.log(reg2.test("13"));//false
//
var reg = /^[\w-]$/;//->数字、字母、下划线、- 中的一个
console.log(reg.test("-"));//true
console.log(reg.test("89"));//false
console.log(reg.test("_"));//true


######()整括号的另外作用:改变x|y的默认的优先级
- |的优先级很高;
- 功能:替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

var reg1 = /^18|19$/;
//错误分析:想匹配119和189,1开始,9结尾,中间是8或者1的任意一个;
//实际可以这些数字都是可以匹配成功的:18、19、181、189、119、819、1819...
console.log(reg1.test("19"));//true
console.log(reg1.test("18"));//true
console.log(reg1.test("119"));//true
console.log(reg1.test("189"));//true
console.log("test 189999999999",reg1.test("189999999999"));//true
console.log("test 819",reg1.test("819"));//true
console.log("test 1819",reg1.test("1819"));//true
console.log("test 1889899819",reg1.test("1889899819 "));//true

//正确分析:18|19 可以匹配18开头或者19结尾的;(18开头)、(19结尾)、(18开头和19几位的),都可以匹配成功;


//|替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

var testReg1=/m|food/;
//匹配(m开头)、(food结尾)、(m开头或者food结尾);这三种都可以匹配
console.log("test m",testReg1.test("m"));//true
console.log("test m464545646565",testReg1.test("m464545646565"));//true
console.log("test mood",testReg1.test("mood"));//true
console.log("test food",testReg1.test("food"));//true
var testReg2=/(m|f)ood/;
//匹配mood/food
console.log("test m",testReg2.test("m"));//false
console.log("test m464545646565",testReg2.test("m464545646565"));//false
console.log("test mood",testReg2.test("mood"));//true
console.log("test food",testReg2.test("food"));//true

var reg2 = /^(18|19)$/;
//18、19
console.log(reg2.test("19"));//true
console.log(reg2.test("18"));//true
console.log(reg2.test("119"));//false
console.log(reg2.test("189"));//false

var reg3 = /^1[8|1]9$/;
//119、189
console.log("test 19",reg3.test("19"));//false
console.log(reg3.test("18"));//false
console.log(reg3.test("119"));//true
console.log(reg3.test("189"));//true
---
###正则实践
- 有效数字的正则(可以是 正数、负数、零、小数 )

1)、"."可以出现也可以不出现,但是一旦出现,后面必须跟着一位或者多位数字
2)、最开始可以有+/- 也可以没有
3)、整数部分,一位数可以是0-9之间的一个,多位数不能以0开头
var reg = /^[+-]?(\d|([1-9]\d+))(.\d+)?$/;//.是一个元字符,所以需要转义;

- 年龄介于18~65之间

18~65可以分为三份;18-19 20-59 60-65
因为1开头的不能是12,15,14这些;
6开头的不能是66,68这些;
2和5开头,后面可以随便,0-9都可以;
var reg = /^(1[8-9]|[2-5]\d|6[0-5])$/;


- 验证邮箱的正则(简版)

左边:数字、字母、下环线、.、-
\w:数字、字母、下划线中的任意一个字符 [0-9a-zA-Z_]
[\w.-]:[\w]、[.]、[-]三者中的任意一个,出现一次或者多次;
[0-9a-zA-Z]:大小写,或者数字;
(.[a-zA-Z]{2,4}) .后面加2-4位大小写的域名,比如.com .cn
{1,2} 出现一次或者两次。可能是顶级域名,也可能是二级域名;
var reg = /^[\w.-]+@[0-9a-zA-Z]+(.[a-zA-Z]{2,4}){1,2}$/;

上一篇 下一篇

猜你喜欢

热点阅读