首页 > 编程语言 >JavaScript了解

JavaScript了解

时间:2023-11-07 17:34:29浏览次数:35  
标签:函数 对象 JavaScript alert 了解 var 属性


JavaScript简介


  • JavaScript 是一门跨平台、面向对象的脚本语言,而Java语言也是跨平台的、面向对象的语言,只不过Java是编译语言,是需要编译成字节码文件才能运行的;JavaScript是脚本语言,不需要编译,由浏览器直接解析并执行。
  • JavaScript 是用来控制网页行为的,它能使网页可交互
  • 那么它可以做什么呢?如改变页面内容、修改指定元素的属性值、对表单进行校验等。

改变页面内容

JavaScript了解_数组

当我点击上面左图的 点击我 按钮,按钮上面的文本就改为上面右图内容,这就是js 改变页面内容的功能。

修改指定元素的属性值

JavaScript了解_数据_02

当我们点击上图的 开灯 按钮,效果就是上面右图效果;当我点击 关灯 按钮,效果就是上面左图效果。其他这个功能中有两张灯泡的图片(使用img标签进行展示),通过修改 img 标签的 src 属性值改变展示的图片来实现。

对表单进行校验

JavaScript了解_数据_03

在上面左图的输入框输入用户名,如果输入的用户名是不满足规则的就展示右图(上) 的效果;如果输入的用户名是满足规则的就展示右图(下) 的效果。

JavaScript引入方式


JavaScript 引入方式就是 HTML 和 JavaScript 的结合方式。JavaScript引入方式有两种:

  • 内部脚本:将 JS代码定义在HTML页面中
  • 外部脚本:将 JS代码定义在外部 JS文件中,然后引入到 HTML页面中

在 HTML 中,JavaScript 代码必须位于 <script></script> 标签之间

代码如下:

alert(数据) 是 JavaScript 的一个方法,作用是将参数数据以浏览器弹框的形式输出出来。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    alert("hello js1");
</script>
</body>
</html>

提示:

  • 在 HTML 文档中可以在任意地方,放置任意数量的<script>标签。
  • 一般把脚本置于 元素的底部,可改善显示速度,因为浏览器在加载页面的时候会从上往下进行加载并解析。 我们应该让用户看到页面内容,然后再展示动态的效果。

外部脚本

  • 第一步:定义外部 js 文件。如定义名为 demo.js的文件,一般放在js包下。
  • 第二步:在页面中引入外部的js文件
    在页面使用 script 标签中使用 src 属性指定 js 文件的 URL 路径。
<script src="../js/demo.js"></script>

注意:

  • 外部脚本不能包含 <script> 标签
    在js文件中直接写 js 代码即可,不要在 js文件 中写 script 标签
  • <script> 标签不能自闭合
    在页面中引入外部js文件时,不能写成 <script src="../js/demo.js" />

JavaScript基础语法


书写语法

  • 区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的。
  • 每行结尾的分号可有可无。
    如果一行上写多个语句时,必须加分号用来区分多个语句。
  • 注释
  • 单行注释:// 注释内容
  • 多行注释:/* 注释内容 */
    注意:JavaScript 没有文档注释
  • 大括号表示代码块

输出语句

js 可以通过以下方式进行内容的输出,只不过不同的语句输出到的位置不同

  • 使用 window.alert() 写入警告框
  • 使用 document.write() 写入 HTML 输出
  • 使用 console.log() 写入浏览器控制台

上面代码通过浏览器打开,我们可以在不能页面上看到 console.log(内容) 输出的内容,它是输出在控制台了,而怎么在控制台查看输出的内容呢?在浏览器界面按 F12 就可以看到下图的控制台

JavaScript了解_数组_04

变量

JavaScript 中用 var 关键字(variable 的缩写)来声明变量。格式 var 变量名 = 数据值;。而在JavaScript 是一门弱类型语言,变量可以存放不同类型的值;如下在定义变量时赋值为数字数据,还可以将变量的值改为字符串类型的数

js 中的变量名命名也有如下规则,和java语言基本都相同

  • 组成字符可以是任何字母、数字、下划线(_)或美元符号($)
  • 数字不能开头
  • 建议使用驼峰命名

JavaScript 中 var 关键字有点特殊,有以下地方和其他语言不一样

  • 作用域:全局变量
  • 变量可以重复定义

针对如上的问题,==ECMAScript 6 新增了 let 关键字来定义变量。它的用法类似于 var,但是所声明的变量,只在 let 关键字所在的代码块内有效,且不允许重复声明。如果在代码块中定义两个同名的变量,IDEA 开发工具就直接报错了。

ECMAScript 6 新增了 const关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。

数据类型

JavaScript 中提供了两类数据类型:原始类型 和 引用类型。

使用 typeof 运算符可以获取数据类型

alert(typeof age); 以弹框的形式将 age 变量的数据类型输出

原始数据类型:

  • number:数字(整数、小数、NaN(Not a Number))
  • string:字符、字符串,单双引皆可
  • boolean:布尔。true,false
  • null:对象为空 为什么打印上面的 obj 变量的数据类型,结果是object;这个官方给出了解释,下面是从官方文档截的图
  • undefined:当声明的变量未初始化时,该变量的默认值是 undefined

运算符

JavaScript 提供了如下的运算符。大部分和 Java语言 都是一样的,不同的是 JS 关系运算符中的 =====,一会我们只演示这两个的区别,其他运算符将不做演示

  • 一元运算符:++,--
  • 算术运算符:+,-,*,/,%
  • 赋值运算符:=,+=,-=…
  • 关系运算符:>,<,>=,<=,!=,\=…
  • 逻辑运算符:&&,||,!
  • 三元运算符:条件表达式 ? true_value : false_value

== 和 ===区别

概述:

  • ==:
  1. 判断类型是否一样,如果不一样,则进行类型转换
  2. 再去比较其值
  • ===:js 中的全等于
  1. 判断类型是否一样,如果不一样,直接返回false
  2. 再去比较其值

类型转换

上述讲解 == 运算符时,发现会进行类型转换,所以接下来我们来详细的讲解一下 JavaScript 中的类型转换。

  • 其他类型转为number
  • string 转换为 number 类型:按照字符串的字面值,转为数字。如果字面值不是数字,则转为NaN
    将 string 转换为 number 有两种方式:
  • 使用 + 正号-负号运算符:
  • 使用 parseInt() 函数(方法)
  • boolean 转换为 number 类型:true 转为1,false转为0
var str = +"20";
alert(str + 1) //21
var str = "20";
alert(parseInt(str) + 1);//21
var flag = +false;
alert(flag); // 0
  • 其他类型转为boolean
  • number 类型转换为 boolean 类型:0和NaN转为false,其他的数字转为true
  • string 类型转换为 boolean 类型:空字符串转为false,其他的字符串转为true
  • null类型转换为 boolean 类型是 false
  • undefined 转换为 boolean 类型是 false

使用场景:

在 Java 中使用字符串前,一般都会先判断字符串不是null,并且不是空字符才会做其他的一些操作,JavaScript也有类型的操作,代码如下:

var str = "abc";

//健壮性判断
if(str != null && str.length > 0){
    alert("转为true");
}else {
    alert("转为false");
}

但是由于 JavaScript 会自动进行类型转换,所以上述的判断可以进行简化,代码如下:

var str = "abc";

//健壮性判断
if(str){
    alert("转为true");
}else {
    alert("转为false");
}

流程控制语句

JavaScript 中提供了和 Java 一样的流程控制语句,如下

  • if
  • switch
  • for
  • while
  • dowhile

和java中的使用基本一样,但for 循环语句中,建议for循环小括号中定义的变量使用let

var sum = 0;
for (let i = 1; i <= 100; i++) { //建议for循环小括号中定义的变量使用let
    sum += i;
}
alert(sum);

函数

函数(就是Java中的方法)是被设计为执行特定任务的代码块;JavaScript 函数通过 function 关键词进行定义。

定义格式

函数定义格式有两种:

  • 方式1
function 函数名(参数1,参数2..){
    要执行的代码
}
  • 方式2
var 函数名 = function (参数列表){
    要执行的代码
}

注意:

  • 形式参数不需要类型。因为JavaScript是弱类型语言
function add(a, b){
      return a + b;
  }

上述函数的参数 a 和 b 不需要定义数据类型,因为在每个参数前加上 var 也没有任何意义。

  • 返回值也不需要定义类型,可以在函数内部直接使用return返回即可

函数调用

函数调用函数:

函数名称(实际参数列表);

使用

let result = add(10,20);

注意:

  • JS中,函数调用可以传递任意个数参数
  • 例如 let result = add(1,2,3); 它是将数据 1 传递给了变量a,将数据 2 传递给了变量 b,而数据 3 没有变量接收。

JavaScript常用对象

JavaScript 提供了很多对象供使用者来使用。这些对象总共分类三类

  • 基本对象

JavaScript了解_数组_05

  • BOM 对象

JavaScript了解_数组_06

  • DOM对象
    DOM 中的对象就比较多了,下图只是截取部分

JavaScript了解_HTML_07

Array对象

概述

  • JavaScript Array对象用于定义数组

定义格式

数组的定义格式有两种:

  • 方式1
var 变量名 = new Array(元素列表);

例如:

var arr = new Array(1,2,3); //1,2,3 是存储在数组中的数据(元素)
  • 方式2
var 变量名 = [元素列表];

例如:

var arr = [1,2,3]; //1,2,3 是存储在数组中的数据(元素)

注意:Java中的数组静态初始化使用的是{}定义,而 JavaScript 中使用的是 [] 定义

元素访问

访问数组中的元素和 Java 语言的一样,格式如下:

arr[索引] = 值;

特点

JavaScript 中的数组相当于 Java 中集合。数组的长度是可以变化的,而 JavaScript 是弱类型,所以可以存储任意的类型的数据。

例如如下代码:

// 变长
var arr3 = [1,2,3];
arr3[10] = 10;
alert(arr3[10]); // 10
alert(arr3[9]);  //undefined

上面代码在定义数组中给了三个元素,又给索引是 10 的位置添加了数据 10,那么 索引3索引9 位置的元素是什么呢?我们之前就介绍了,在 JavaScript 中没有赋值的话,默认就是 undefined

如果给 arr3 数组添加字符串的数据,也是可以添加成功的

arr3[5] = "hello";
alert(arr3[5]); // hello

属性

Array 对象提供了很多属性,如下图是官方文档截取

JavaScript了解_数组_08

而我们只讲解 length 属性,该数组可以动态的获取数组的长度。而有这个属性,我们就可以遍历数组了

var arr = [1,2,3];
for (let i = 0; i < arr.length; i++) {
    alert(arr[i]);
}

方法

Array 对象同样也提供了很多方法,如下图是官方文档截取的

JavaScript了解_数组_09

我们只演示 push 函数和 splice 函数。

  • push 函数:给数组添加元素,也就是在数组的末尾添加元素
    参数表示要添加的元素
// push:添加方法
  var arr5 = [1,2,3];
  arr5.push(10);
  alert(arr5);  //数组的元素是 {1,2,3,10}
  • splice 函数:删除元素
    参数1:索引。表示从哪个索引位置删除
    参数2:个数。表示删除几个元素
// splice:删除元素
  var arr5 = [1,2,3];
  arr5.splice(0,1); //从 0 索引位置开始删除,删除一个元素 
  alert(arr5); // {2,3}

String对象

String对象的创建方式有两种

  • 方式1:
var 变量名 = new String(s);
  • 方式2:
var 变量名 = "数组";

属性:

String对象提供了很多属性,下面给大家列举了一个属性 length ,该属性是用于动态的获取字符串的长度

JavaScript了解_数据_10

函数:String对象提供了很多函数(方法),下面给大家列举了两个方法。

JavaScript了解_数组_11

String对象还有一个函数 trim() ,该方法在文档中没有体现,但是所有的浏览器都支持;它是用来去掉字符串两端的空格。

代码演示:

var str4 = '  abc   ';
alert(1 + str4 + 1);

上面代码会输出内容 1 abc 1,很明显可以看到 abc 字符串左右两边是有空格的。接下来使用 trim() 函数

var str4 = '  abc   ';
alert(1 + str4.trim() + 1);

输出的内容是 1abc1 。这就是 trim() 函数的作用。

用户在输入用户名和密码时,可能会习惯的输入一些空格,这样在我们后端程序中判断用户名和密码是否正确,结果肯定是失败。所以我们一般都会对用户输入的字符串数据进行去除前后空格的操作。

自定义对象

在 JavaScript 中自定义对象特别简单,下面就是自定义对象的格式:

var 对象名称 = {
    属性名称1:属性值1,
    属性名称2:属性值2,
    ...,
    函数名称:function (形参列表){},
    ...
};

调用属性的格式:

对象名.属性名

调用函数的格式:

对象名.函数名()

接下来通过代码演示一下,让大家体验一下 JavaScript 中自定义对象

var person = {
        name : "zhangsan",
        age : 23,
        eat: function (){
            alert("干饭~");
        }
    };


alert(person.name);  //zhangsan
alert(person.age); //23

person.eat();  //干饭~

BOM

BOM:Browser Object Model 浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装为对象。

我们要操作浏览器的各个组成部分就可以通过操作 BOM 中的对象来实现。比如:我现在想将浏览器地址栏的地址改为 https://www.itheima.com 就可以通过使用 BOM 中定义的 Location 对象的 href 属性,代码: location.href = "https://itheima.com";

BOM 中包含了如下对象:

  • Window:浏览器窗口对象
  • Navigator:浏览器对象
  • Screen:屏幕对象
  • History:历史记录对象
  • Location:地址栏对象

下图是 BOM 中的各个对象和浏览器的各个组成部分的对应关系

JavaScript了解_数组_12

BOM 中的 Navigator 对象和 Screen 对象基本不会使用,所以我们的课堂只对 WindowHistoryLocation 对象进行讲解。

Window对象

window 对象是 JavaScript 对浏览器的窗口进行封装的对象。

获取window对象

该对象不需要创建直接使用 window,其中 window. 可以省略。比如我们之前使用的 alert() 函数,其实就是 window 对象的函数,在调用是可以写成如下两种

  • 显式使用 window 对象调用
window.alert("abc");
  • 隐式调用
alert("abc")

window对象属性

window 对象提供了用于获取其他 BOM 组成对象的属性

JavaScript了解_HTML_13

也就是说,我们想使用 Location 对象的话,就可以使用 window 对象获取;写成 window.location,而 window. 可以省略,简化写成 location 来获取 Location 对象。

window对象函数

window 对象提供了很多函数供我们使用,而很多都不常用;下面给大家列举了一些比较常用的函数

JavaScript了解_数据_14

setTimeout(function,毫秒值) : 在一定的时间间隔后执行一个function,只执行一次setInterval(function,毫秒值) :在一定的时间间隔后执行一个function,循环执行

confirm代码演示:

// confirm(),点击确定按钮,返回true,点击取消按钮,返回false
var flag = confirm("确认删除?");

alert(flag);

下图是 confirm() 函数的效果。当我们点击 确定 按钮,flag 变量值记录的就是 true ;当我们点击 取消 按钮,flag 变量值记录的就是 false

JavaScript了解_数据_15

而以后我们在页面删除数据时候如下图每一条数据后都有 删除 按钮,有可能是用户的一些误操作,所以对于删除操作需要用户进行再次确认,此时就需要用到 confirm() 函数。

定时器代码演示:

setTimeout(function (){
    alert("hehe");
},3000);

当我们打开浏览器,3秒后才会弹框输出 hehe,并且只会弹出一次。

setInterval(function (){
    alert("hehe");
},2000);

当我们打开浏览器,每隔2秒都会弹框输出 hehe

History对象

History 对象是 JavaScript 对历史记录进行封装的对象。

  • History 对象的获取
    使用 window.history获取,其中window. 可以省略
  • History 对象的函数

JavaScript了解_数据_16

这两个函数我们平时在访问其他的一些网站时经常使用对应的效果,如下图

JavaScript了解_数组_17

当我们点击向左的箭头,就跳转到前一个访问的页面,这就是 back() 函数的作用;当我们点击向右的箭头,就跳转到下一个访问的页面,这就是 forward() 函数的作用。

Location对象

JavaScript了解_数组_18

Location 对象是 JavaScript 对地址栏封装的对象。可以通过操作该对象,跳转到任意页面。

获取Location对象

使用 window.location获取,其中window. 可以省略

window.location.方法();
location.方法();

Location对象属性

Location对象提供了很对属性。以后常用的只有一个属性 href

JavaScript了解_HTML_19

代码演示:

alert("要跳转了");
location.href = "https://www.baidu.com";

在浏览器首先会弹框显示 要跳转了,当我们点击了 确定 就会跳转到 百度 的首页。

DOM

概述

DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。

DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为

  • Document:整个文档对象
  • Element:元素对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象

如下图,左边是 HTML 文档内容,右边是 DOM 树

JavaScript了解_数据_20

作用:

JavaScript 通过 DOM, 就能够对 HTML进行操作了

  • 改变 HTML 元素的内容
  • 改变 HTML 元素的样式(CSS)
  • 对 HTML DOM 事件作出反应
  • 添加和删除 HTML 元素

DOM相关概念:

DOM 是 W3C(万维网联盟)定义了访问 HTML 和 XML 文档的标准。该标准被分为 3 个不同的部分:

  1. 核心 DOM:针对任何结构化文档的标准模型。 XML 和 HTML 通用的标准
  • Document:整个文档对象
  • Element:元素对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象
  1. XML DOM: 针对 XML 文档的标准模型
  2. HTML DOM: 针对 HTML 文档的标准模型

该标准是在核心 DOM 基础上,对 HTML 中的每个标签都封装成了不同的对象

  • 例如:<img> 标签在浏览器加载到内存中时会被封装成 Image 对象,同时该对象也是 Element 对象。
  • 例如:<input type='button'> 标签在浏览器加载到内存中时会被封装成 Button 对象,同时该对象也是 Element 对象。

获取 Element对象

HTML 中的 Element 对象可以通过 Document 对象获取,而 Document 对象是通过 window 对象获取。

Document 对象中提供了以下获取 Element 元素对象的函数

  • getElementById():根据id属性值获取,返回单个Element对象
  • getElementsByTagName():根据标签名称获取,返回Element对象数组
  • getElementsByName():根据name属性值获取,返回Element对象数组
  • getElementsByClassName():根据class属性值获取,返回Element对象数组

代码演示:

下面有提前准备好的页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img id="light" src="../imgs/off.gif"> <br>

    <div class="cls">传智教育</div>   <br>
    <div class="cls">黑马程序员</div> <br>

    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
    <br>
    <script>
        //在此处书写js代码
    </script>
</body>
</html>
  • 根据 id 属性值获取上面的 img 元素对象,返回单个对象
var img = document.getElementById("light");
  alert(img);

结果如下:

JavaScript了解_数据_21

从弹框输出的内容,也可以看出是一个图片元素对象。

  • 根据标签名称获取所有的 div 元素对象
var divs = document.getElementsByTagName("div");// 返回一个数组,数组中存储的是 div 元素对象
  // alert(divs.length);  //输出 数组的长度
  //遍历数组
  for (let i = 0; i < divs.length; i++) {
      alert(divs[i]);
  }
  • 获取所有的满足 name = 'hobby' 条件的元素对象
//3. getElementsByName:根据name属性值获取,返回Element对象数组
  var hobbys = document.getElementsByName("hobby");
  for (let i = 0; i < hobbys.length; i++) {
      alert(hobbys[i]);
  }
  • 获取所有的满足 class='cls' 条件的元素对象
//4. getElementsByClassName:根据class属性值获取,返回Element对象数组
  var clss = document.getElementsByClassName("cls");
  for (let i = 0; i < clss.length; i++) {
      alert(clss[i]);
  }

事件监听


要想知道什么是事件监听,首先先聊聊什么是事件?

HTML 事件是发生在 HTML 元素上的“事情”。比如:页面上的 按钮被点击鼠标移动到元素之上按下键盘按键 等都是事件。

事件监听是JavaScript 可以在事件被侦测到时执行一段逻辑代码。例如下图当我们点击 开灯 按钮,就需要通过 js 代码实现替换图片

JavaScript了解_HTML_22

再比如下图输入框,当我们输入了用户名 光标离开 输入框,就需要通过 js 代码对输入的内容进行校验,没通过校验就在输入框后提示 用户名格式有误!

JavaScript了解_数组_23

事件绑定

JavaScript 提供了两种事件绑定方式:

  • 方式一:通过 HTML标签中的事件属性进行绑定
    如下面代码,有一个按钮元素,我们是在该标签上定义 事件属性,在事件属性中绑定函数。onclick 就是 单击事件 的事件属性。onclick='on()' 表示该点击事件绑定了一个名为 on() 的函数
<input type="button" onclick='on()’>

下面是点击事件绑定的 on() 函数

function on(){
      alert("我被点了");
  }
  • 方式二:通过 DOM 元素属性绑定
    如下面代码是按钮标签,在该标签上我们并没有使用 事件属性,绑定事件的操作需要在 js 代码中实现
<input type="button" id="btn">

下面 js 代码是获取了 id='btn' 的元素对象,然后将 onclick 作为该对象的属性,并且绑定匿名函数。该函数是在事件触发后自动执行

document.getElementById("btn").onclick = function (){
      alert("我被点了");
  }

代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--方式1:在下面input标签上添加 onclick 属性,并绑定 on() 函数-->
    <input type="button" value="点我" onclick="on()"> <br>
    <input type="button" value="再点我" id="btn">

    <script>
        function on(){
            alert("我被点了");
        }
          //方式2:获取 id="btn" 元素对象,通过调用 onclick 属性 绑定点击事件
        document.getElementById("btn").onclick = function (){
            alert("我被点了");
        }
    </script>
</body>
</html>

常见事件

上面案例中使用到了 onclick 事件属性,那都有哪些事件属性供我们使用呢?下面就给大家列举一些比较常用的事件属性

JavaScript了解_数组_24

  • onfocus 获得焦点事件。
    如下图,当点击了输入框后,输入框就获得了焦点。而下图示例是当获取焦点后会更改输入框的背景颜色。

JavaScript了解_数组_25

  • onblur 失去焦点事件。
    如下图,当点击了输入框后,输入框就获得了焦点;再点击页面其他位置,那输入框就失去焦点了。下图示例是将输入的文本转换为大写。
  • onmouseout 鼠标移出事件。
  • onmouseover 鼠标移入事件。
    如下图,当鼠标移入到 苹果 图片上时,苹果图片变大;当鼠标移出 苹果图片时,苹果图片变小。
  • onsubmit 表单提交事件
    如下是带有表单的页面
<!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <title>Title</title>
  </head>
  <body>
      <form id="register" action="#" >
          <input type="text" name="username" />
          <input type="submit" value="提交">
      </form>
      <script>
  
      </script>
  </body>
  </html>

如上代码的表单,当我们点击 提交 按钮后,表单就会提交,此处默认使用的是 GET 提交方式,会将提交的数据拼接到 URL 后。现需要通过 js 代码实现阻止表单提交的功能,js 代码实现如下:

  1. 获取 form 表单元素对象。
  2. form 表单元素对象绑定 onsubmit 事件,并绑定匿名函数。
  3. 该匿名函数如果返回的是true,提交表单;如果返回的是false,阻止表单提交。
document.getElementById("register").onsubmit = function (){
      //onsubmit 返回true,则表单会被提交,返回false,则表单不提交
      return true;
  }

RegExp对象

RegExp 是正则对象。正则对象是判断指定字符串是否符合规则。

我们可以通过爬虫技术去爬取该页面源代码,然后获取页面中所有的邮箱,后期我们可以给这些邮箱地址发送推广的邮件。那么问题来了,如何才能知道页面内容中哪些事邮箱地址呢?这里就可以使用正则表达式来匹配邮箱。

在 js 中对正则表达式封装的对象就是正则对象。

正则对象使用

创建对象

正则对象有两种创建方式:

  • 直接量方式:注意不要加引号
var reg = /正则表达式/;
  • 创建 RegExp 对象
var reg = new RegExp("正则表达式");

函数

test(str) :判断指定字符串是否符合规则,返回 true或 false

正则表达式

从上面创建正则对象的格式中可以看出不管哪种方式都需要正则表达式,那么什么是正则表达式呢?

正则表达式定义了字符串组成的规则。也就是判断指定的字符串是否符合指定的规则,如果符合返回true,如果不符合返回false。

正则表达式是和语言无关的。很多语言都支持正则表达式,Java语言也支持,只不过正则表达式在不同的语言中的使用方式不同,js 中需要使用正则对象来使用正则表达式。

正则表达式常用的规则如下:

  • ^:表示开始
  • $:表示结束
  • [ ]:代表某个范围内的单个字符,比如: [0-9] 单个数字字符
  • .:代表任意单个字符,除了换行和行结束符
  • \w:代表单词字符:字母、数字、下划线(),相当于 [A-Za-z0-9]
  • \d:代表数字字符: 相当于 [0-9]

量词:

  • +:至少一个
  • *:零个或多个
  • ?:零个或一个
  • {x}:x个
  • {m,}:至少m个
  • {m,n}:至少m个,最多n个

代码演示:

// 规则:单词字符,6~12
//1,创建正则对象,对正则表达式进行封装
var reg = /^\w{6,12}$/;

var str = "abcccc";
//2,判断 str 字符串是否符合 reg 封装的正则表达式的规则
var flag = reg.test(str);
alert(flag);

标签:函数,对象,JavaScript,alert,了解,var,属性
From: https://blog.51cto.com/u_16078425/8237448

相关文章

  • 21 个最佳 Javascript IDE 和代码编辑器 [CSS、HTML、JavaScript]
    这是我们挑选的21个最佳JavaScriptIDE和源代码编辑器。目录什么是IDE选择正确的开发环境时要寻找什么?免费的最佳JavascriptIDE最佳高级JavascriptIDE结论:最佳JavaScriptIDE是哪个?常见问题解答:最佳JavascriptIDE如今,Javascript在前端开发中越来越流行。您......
  • asp.net中怎样用Javascript控制RequiredFieldValidator控件什么时候启用,什么时候不启
    Enable/DisableRequiredFieldValidatorwithJavascriptdocument.getElementById("requiredfieldvalidatorid").enabled=false;<asp:DropDownListID="ddlServiceName"runat="server"onchange='varDateValidator=docume......
  • 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为
    一个报表的查询,用ajax调用的Service,查询条件没有问题,后台也能返回数据,就一直返回Error提示,F12看到是因为返回json时出错了 在web.config的configuration加以下代码即可解决<system.web.extensions><scripting><webServices><jsonSerializationmaxJs......
  • 深入了解Flutter中的ChangeNotifier
    介绍在Flutter应用程序中,状态管理是一个关键的方面。Flutter提供了许多方法来管理应用程序的状态,其中之一是使用ChangeNotifier类。本文将深入探讨ChangeNotifier是什么,如何使用它,以及它在Flutter应用程序中的一般使用场景。1.什么是ChangeNotifier?ChangeNotifier是Flutter框架中的......
  • JavaScript string对象(属性,方法)获取图片后缀案例 输入和输出结果转换形式案例
    一、创建string对象varstrOb=newString("abcefg");varstrOb=String("abcefg");varstrOb="abcefg";二、属性length  (字符串长度)varstr='hello';console.log(str.length)//5三、方法1、子字符串位置indexOf(string,[index])str......
  • JavaScript--Web API
    DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API。DOM是浏览器提供的一套专门用于操作网页内容的功能作用:开发网页内容特效和实现用户交互DOM树DOM节点节点是文档树的组成部分,每一个节点都是一个DOM对象,主要分为......
  • node.js快死了!Bun 1.0 正在改变 JavaScript 游戏规则
    在进一步讨论之前,我们需要解释什么是javascript运行时以及为什么我们应该关心它的速度。 想象一下,你用JavaScript写了一个故事,你需要有人大声朗读。JavaScript运行时就像那个友好的叙述者,让你的故事栩栩如生!这是一个特殊的环境,你的JavaScript故事被阅读和表演出来。但是,让我......
  • javascript中的时间格式化的方法
     javascript中的时间格式化的方法 Date.prototype.format=function(format){varo={"M+":this.getMonth()+1,//month"d+":this.getDate(),//day"h+":this.getHours(),//hour&quo......
  • TCP协议:超时重传、流量控制、keep-alive和端口号,你真的了解吗?
    引言在之前的讲解中,我们已经介绍了TCP协议的一些面试内容,相信大家对于TCP也有了一些新的了解。今天,我们将继续深入探讨TCP的超时重传、流量控制、TCP的keepalive机制以及端口号等相关信息。这些内容对于理解TCP协议的工作原理和实际应用非常重要,希望可以加深大家对TCP协议的理解......
  • 关于 JavaScript 模块化的描述
    AMD是RequireJS在推广过程中对模块定义的规范化产出,而CMD是SeaJS在推广过程中对模块定义的规范化产出,也就是,RequireJS遵循AMD规范,而Sea.js遵循CMD规范eaJs遵循CMD规范为通用模块规范,RequireJs遵循AMD规范为异步模块规范。CMD依赖就近,AMD依赖前置。//CMDCommonModuleD......