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日

相关文章

  • js弹出窗口返回值的简单实例

    下面我为你详细讲解“js弹出窗口返回值的简单实例”的完整攻略。 1. 简介 弹出窗口是指在当前页面之上打开另一个小窗口,通常用于提示/确认信息、输入数据等,其返回值也通常用于将弹出窗口中的数据传递到主页面。而在基于web技术的网站中,JavaScript是用来实现弹出窗口功能的主要技术。 2. 实现流程 2.1 弹出窗口 首先,在打开弹出窗口的链接/按钮中需…

    JavaScript 2023年6月11日
    00
  • 用云开发Cloudbase实现小程序多图片内容安全监测的代码详解

    首先,本文将以使用云开发Cloudbase实现小程序多图片内容安全监测为主题,为读者提供一份完整的攻略。在攻略中,我们将会提供详细的代码实现过程,包含两条示例说明。 准备工作 在开始使用云开发Cloudbase实现小程序多图片内容安全监测前,我们需要首先进行一些准备工作。 1. 注册并创建云开发环境 在使用云开发Cloudbase之前,我们需要先进行注册并创…

    JavaScript 2023年5月27日
    00
  • js 毫秒转天时分秒的实例

    下面是js毫秒转换成天时分秒的完整攻略。 1. 背景与需求 在实际项目中,我们通常会使用毫秒作为时间单位,而有时候我们需要将毫秒转化为更加直观易懂的时间格式,例如天时分秒格式。因此,我们需要编写一个js函数来实现毫秒转换为天时分秒的功能。 2. 实现思路 将毫秒转换为天时分秒需要进行以下的操作: 将毫秒数除以1000得到秒数,然后再将秒数除以60得到分钟数,…

    JavaScript 2023年5月27日
    00
  • javascript中10个正则表达式使用介绍基础篇

    JavaScript中10个正则表达式使用介绍基础篇 正则表达式是一种用来匹配字符串模式的工具。在JavaScript中,可以使用正则表达式来对字符串进行匹配、搜索、替换等操作。 本篇攻略将为大家介绍JavaScript中10个常用的正则表达式,让你快速理解和掌握正则表达式的基础知识。 1. 匹配字符 1.1 匹配数字 \d是匹配任意数字的元字符。例如,\d…

    JavaScript 2023年6月10日
    00
  • HTML中的pre-load 和 pre-fetch

    当浏览器加载网页时,通常会遵循一个默认的流程,先加载 HTML、CSS 和 JavaScript,然后再加载图片、音频、视频等资源。这个默认的流程可能会导致网页加载速度变慢,用户体验不佳。因此,可以使用一些技术来优化网页加载的速度,其中之一就是按需加载。 按需加载是指根据用户实际需要,动态地加载资源,而不是一次性加载所有资源。这样可以减少页面加载时间,提高用…

    JavaScript 2023年4月17日
    00
  • JS获取时间的相关函数及时间戳与时间日期之间的转换

    获取时间的相关函数及时间戳与时间日期之间的转换 在JavaScript中,获取时间的方法非常多,包括获取时间戳、获取当前日期时间等。下面我们来依次介绍这些函数。 1.获取时间戳: 时间戳指的是距离1970年1月1日0时0分0秒(UTC时间)的时间差,单位为毫秒。获取时间戳有两种方式: (1) Date.now() 函数 这个函数返回当前时间的时间戳,它等价于…

    JavaScript 2023年5月27日
    00
  • JS与C#编码解码

    JS和C#都内置了编码和解码的功能,并提供了多种编码和解码方式。下面我将具体讲解JS和C#中的编码和解码,并提供两个示例来演示编码和解码的过程。 JS中的编码和解码 在JS中,我们通常使用encodeURI和encodeURIComponent来对URL进行编码,使用decodeURI和decodeURIComponent对URL进行解码。下面是具体的使用方…

    JavaScript 2023年5月20日
    00
  • js 获取json数组里面数组的长度实例

    获取JSON数组里面数组的长度可以使用JavaScript语言中的length属性,具体分为获取根数组长度和获取嵌套数组长度两种情况。 获取根数组长度 首先,需要使用JSON.parse()方法将JSON字符串解析成JavaScript对象。然后,通过对象的length属性获取根数组的长度。 示例代码如下所示: let jsonStr = ‘[{"…

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