javascript RegExp对象(正则表达式)

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框架设计模式详解

    JavaScript 框架设计模式是指在各种 JavaScript 应用和框架中使用的一种处理问题和实现功能的设计方法。下面详细讲解一下这种设计模式的完整攻略。 1. 了解模块化设计 JavaScript 应用程序的模块化设计允许开发人员将整个系统分解成逻辑上相关的不同模块。这使得代码更加整洁和可维护,并允许代码重复使用。 2. 使用设计模式 在 JavaS…

    JavaScript 2023年6月10日
    00
  • JavaScript创建类/对象的几种方式概述及实例

    下面是详细讲解“JavaScript创建类/对象的几种方式概述及实例”的攻略: 1. 创建类的几种方式 1.1 构造函数创建 通过构造函数创建类是最常见的方式,它使用函数来定义类,并在实例化时通过关键字 new 来调用该函数。以下是一个示例: function Person(name, age) { this.name = name; this.age = …

    JavaScript 2023年5月27日
    00
  • JavaScript的DOM事件详解

    下面是JavaScript的DOM事件详解的完整攻略。 什么是DOM事件? DOM事件是指由DOM元素触发的事件,包括如下几种类型: 鼠标事件:click、mousedown、mousemove、mouseup、mouseover、mouseout、mouseenter、mouseleave等。 键盘事件:keydown、keypress、keyup等。 表…

    JavaScript 2023年6月10日
    00
  • js实现touch移动触屏滑动事件

    首先,在JS中实现touch移动事件需要以下步骤: 1.监听touch事件,获取移动的距离及方向2.根据移动的距离及方向判断滑动操作:是垂直滑动还是水平滑动3.根据滑动的距离改变页面元素的位置4.结束滑动后执行相应的操作,比如改变元素的样式或者执行相关动画 下面是JS实现touch移动事件的完整示例: <!DOCTYPE html> <ht…

    JavaScript 2023年6月11日
    00
  • javascript跨域的4种方法和原理详解

    请听我详细讲解“JavaScript跨域的4种方法和原理详解”的完整攻略。 什么是跨域 在Web开发中,当一个页面使用了跟本页面不同域名的资源,例如JavaScript、CSS、图片、iframe等,就会出现所谓的“跨域”问题(Cross-Origin Resource Sharing,CORS)。因为同源策略(Same-Origin Policy),默认情…

    JavaScript 2023年5月27日
    00
  • NodeJS有难度的面试题(能答对几个)

    下面我会详细讲解一下 “NodeJS有难度的面试题(能答对几个)” 的完整攻略。 1. Node.js的基础知识 在面试过程中,面试官通常会问到一些基础的 Node.js 知识,例如: Node.js 是什么? npm 是什么? 有什么用? 如何在 Node.js 中使用第三方模块? 什么是模块? 如何定义并导入模块? 针对这些问题,你需要先通过自学文档以及…

    JavaScript 2023年5月28日
    00
  • JS实现轮播图效果的3种简单方法

    JS实现轮播图效果的3种简单方法 1. 利用定时器来实现轮播图效果 首先,我们需要先定义图片数组,以便进行遍历,设置一个计数器,每隔一段时间,计数器加1,通过计数器来更改图片。 HTML代码: <div id="slider"> <img src="img1.jpg" alt="图片一&qu…

    JavaScript 2023年6月11日
    00
  • ASP动态生成的javascript表单验证代码

    下面是ASP动态生成的javascript表单验证代码的完整攻略。 什么是ASP动态生成的javascript表单验证代码? ASP动态生成的javascript表单验证代码是在ASP程序中使用javascript代码来验证用户提交的表单数据,它可以确保用户提交的数据格式符合要求,从而排除了很多不合规的数据,提高了网站的安全性和稳定性。 如何实现ASP动态生…

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