javascript RegExp对象(正则表达式)

yizhihongxing

JavaScript中的RegExp对象提供了在字符串中进行正则表达式匹配的能力。它通常用于处理字符串中的模式匹配,如验证、搜索或替换特定模式,是JavaScript中必不可少的一个功能。

RegExp对象的基本概述

创建RegExp对象

使用RegExp对象,最简单的方法是通过一个字符串的值来创建,将其作为参数传递给RegExp的构造函数:

var pattern1 = new RegExp("love");
var pattern2 = /love/;

两种方式均可以创建一个正则表达式,从效果上看是等效的。当然,第二种方式比较常用,因为它更加简洁方便。

特殊字符

正则表达式中存在一些特殊字符,它们的作用相当于占位符。如下表所示:

特殊字符 说明
\d 匹配任意一个数字字符(0~9)
\D 匹配任意一个非数字字符
\w 匹配任意一个英文字母或数字字符(a~z、A~Z、0~9)
\W 匹配任意一个非英文字母或数字字符
\s 匹配任意一个空白字符,包括空格、制表符、换页符等
\S 匹配任意一个非空白字符
. 匹配换行符以外任意字符。如果要匹配含换行符的任意字符,可以使用s修饰符或[\s\S]

修饰符

在RegExp对象中还有一些修饰符,可以对正则表达式的匹配行为进行修饰:

修饰符 说明
g 全局匹配模式,对于一条字符串进行全局的匹配。
i 忽略大小写模式,使正则表达式不区分大小写地进行匹配。
m 多行模式,使正则表达式可以在多行字符串中进行匹配。
s 使 . 匹配包括换行符在内的任意字符。该修饰符在ES2018才被加入。
u Unicode 模式,开启 Unicode 匹配模式。
y 粘性匹配模式,sticky 模式检查从上一次匹配结束的后一个位置开始。

使用RegExp对象进行匹配

test()方法

test()方法用于检测一个字符串是否匹配某个模式,返回一个布尔值。例如:

var reg = /love/;
console.log(reg.test("I love JavaScript")) // true
console.log(reg.test("I Love JavaScript")) // false

exec()方法

exec()方法用于在字符串中搜索一个指定的模式,并返回该模式匹配的结果。该方法返回一个数组,数组中包含模式的匹配结果:

var reg = /JavaScript/gi;
console.log(reg.exec("I Love JavaScript, Do you love JavaScript too?")) // ["JavaScript"]
console.log(reg.exec("I Love JavaScript, Do you love JavaScript too?")) // ["JavaScript"]

RegExp对象的高级用法

正则表达式的分组

使用括号对正则表达式进行分组,可以在一定程度上简化复杂的正则表达式。括号内的正则表达式称为一个子表达式,它用于匹配特定的模式,从而实现整个模式的匹配。例如:

var reg = /(Java)script/;
var str = "I Love JavaScript, Do you love JavaScript too?"
console.log(reg.test(str)) // true
console.log(reg.exec(str)) // ["JavaScript", "Java"]

正则表达式的反向引用

反向引用用于在正则表达式中引用前面匹配的内容。反向引用可以使用反斜杠()和数字来实现,其中数字代表引用的分组号。例如:

var reg = /(\d{3})-(\d{3,8})/;
var str = "010-12345678";
console.log(reg.exec(str)); // ["010-12345678", "010", "12345678"]

replace()方法

replace()方法可以使用正则表达式替换字符串中的特定模式:

var str = "I Love JavaScript, Do you love JavaScript too?"
console.log(str.replace(/love/gi, "hate")); // "I hate JavaScript, Do you hate JavaScript too?"

上面的代码中,指定了一个正则表达式 /love/gi ,将其中所有的 love 替换为 hate。

match()方法

match()方法可以从一个字符串中搜索一个正则表达式的匹配结果,并返回数组:

var str = "Hello World, his name is John Smith.";
console.log(str.match(/\b([A-Z][a-z]+)\b/g)); // ["Hello", "World", "John", "Smith"]

上面的代码中,使用 \b([A-Z][a-z]+)\b 匹配字符串中的标题(即每个单词首字母大写的单词)。

示例

邮箱验证

邮箱账号由字母、数字、下划线、点号和连字符组成,且以字母或数字开头,以字母或数字结尾:

function checkEmail(email) {
    var reg = /^[A-Za-z0-9][\w\.-]*[A-Za-z0-9]@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$/;
    return reg.test(email);
}

console.log(checkEmail("abc@163.com")); // true
console.log(checkEmail("123abc@qq.com")); // true
console.log(checkEmail("_abc@163.com")); // false
console.log(checkEmail("abc@163.com.")); // false

手机号码验证

中国大陆的手机号码由11位数字组成,第一位必须是1,第二位为3、4、5、7或8中的任意一位:

function checkMobile(mobile) {
    var reg = /^1[34578]\d{9}$/;
    return reg.test(mobile);
}

console.log(checkMobile("18500000000"));  // true
console.log(checkMobile("1300000000"));  // false
console.log(checkMobile("12345678900"));  // false
console.log(checkMobile("19900001111"));  // true

以上仅是一些常见的例子,正则表达式的应用十分广泛,可以解决很多字符串模式匹配的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript RegExp对象(正则表达式) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript DOM学习第八章 表单错误提示

    下面是JavaScript DOM学习第八章 表单错误提示的完整攻略。 1. 概述 在web应用程序中,表单验证是非常必要的功能,可以避免用户输入一些无效或不合法的数据。第八章主要讲解了如何使用JavaScript DOM来实现表单错误提示的功能。 主要思路是通过JavaScript来验证表单输入的内容,并且在满足错误条件时,使用JS DOM操作来显示错误的…

    JavaScript 2023年6月10日
    00
  • 《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

    《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型 引用类型 在 ECMAScript 中,引用类型指的是一种数据类型,这种数据类型是由多个不同的属性组成的对象。 Object 类型 Object 类型是 ECMAScript 中最基本的数据类型,也可以称之为引用类型的总称。对象是由键值对组成的无序集合。 创建一个 Obje…

    JavaScript 2023年5月27日
    00
  • JavaScript实现页面电子时钟

    下面是JavaScript实现页面电子时钟的完整攻略: 1. 准备工作 在实现页面电子时钟之前,需要先编写HTML和CSS代码来布局和样式化页面,然后才能使用JavaScript来实现时钟的功能。 1.1. HTML代码 HTML代码负责页面的布局,通常会包含容器元素来存放时钟的各个部分。 <!– 电子时钟容器 –> <div clas…

    JavaScript 2023年5月28日
    00
  • javascript中href和replace的比较(详解)

    JavaScript中href和replace的比较(详解) 在JavaScript中,href和replace方法都可以用来改变当前页面的URL地址,但它们有着不同的用法和效果。本文将详细介绍这两种方法的差异并提供相关示例,以帮助读者更好地理解。 href方法 使用href方法可以通过在当前窗口中打开新的URL地址。该操作会导致当前页面的所有状态丢失,包括…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript中的事件流和事件处理程序

    详解JavaScript中的事件流和事件处理程序 JavaScript中的事件是指用户与网页进行交互时所产生的所有动作,比如鼠标点击、键盘敲击、窗口滚动等等。JavaScript需要对这些事件进行处理,而事件的类型和顺序则由事件流来控制。本篇文章将详细介绍JavaScript中的事件流和事件处理程序,并提供示例说明。 事件流 事件流描述的是从页面中接收事件的…

    JavaScript 2023年5月18日
    00
  • JS面向对象的程序设计相关知识小结

    下面是“JS面向对象的程序设计相关知识小结”的详细讲解。 1. Javascript面向对象基础 1.1 对象 在Javascript中,对象是由属性和方法组成的实例。属性可以是一个值、一个函数或一个对象。一个对象的属性也可以是另一个对象。方法是指对象可以执行的函数。 对象的创建可以使用字面量语法、构造函数或Object.create()方法。例如: // …

    JavaScript 2023年5月27日
    00
  • JavaScript中标识符提升问题

    JavaScript中标识符提升问题是指在JavaScript代码中,变量或函数在声明之前仍然可以被引用和使用的问题。这是JavaScript语言本身的一个特性,不是一个错误。这种特性也被称为提升(Hoisting)。 在JavaScript代码中,当我们声明一个变量或函数时,它们会在代码执行之前被“提升”到代码的顶部。这意味着我们可以在声明之前使用它们。但…

    JavaScript 2023年5月18日
    00
  • javascript 按回车键相应按钮提交事件

    要使得在输入框中按下回车键能够提交表单,可以分为以下几个步骤: 找到输入框的 DOM 元素。 给输入框添加 onkeydown 事件监听器。 在事件监听器中判断按下的是否为回车键。 如果是回车键,则阻止默认行为(即防止换行),并执行相应的提交表单操作。 下面按照具体的方法和示例一步步进行讲解。 1. 找到输入框的 DOM 元素 首先,需要找到要对其添加事件监…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部