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中的Array对象(数组的合并、转换、迭代、排序、堆栈)

    下面是关于JavaScript中的Array对象的完整攻略: 概述 Array是JavaScript中用于存储和操作一组数据的对象,它是一种有序列表,可以存储不同类型的值,包括数字、字符串、对象、甚至是其它数组。 在使用Array时,我们可以通过许多方法来操作它,这些方法可以帮助我们对数组进行合并、转换、迭代、排序和操作堆栈。接下来我们将逐一介绍这些方法。 …

    JavaScript 2023年5月27日
    00
  • 一个不错的可以检测多中浏览器的函数和其它功能第2/2页

    函数概述 这是一个可以检测多种浏览器的 JavaScript 函数,它可以帮助你判断当前的浏览器类型和版本号,并且还可以检测浏览器是否支持某些功能。这个函数定义比较长,但是使用起来非常方便。下面是这个函数的代码: function detectBrowser() { var ua = navigator.userAgent; var browserName;…

    JavaScript 2023年6月11日
    00
  • Vue中使用import进行路由懒加载的原理分析

    Vue是一款非常流行的前端框架,Vue-router是Vue框架提供的一个非常重要的路由管理插件。在Vue中使用import进行路由懒加载是Vue-router提供的一种路由懒加载方式,其原理分析如下: 1. import引入组件 在Vue项目中,我们通常使用import语法引入各种组件。 示例: import Vue from ‘vue’ import A…

    JavaScript 2023年6月11日
    00
  • javascript学习笔记(七) js函数介绍

    JavaScript学习笔记(七) – JavaScript函数介绍 什么是函数 函数是一个可预测的、可重用的代码块,用于实现特定的任务。函数是 JavaScript 的一等公民,因此它们可以像任何其他值一样传递和赋值。 函数声明和调用 使用 function 关键字来声明一个函数。下面是一个简单的函数声明示例: function sayHello() { …

    JavaScript 2023年5月18日
    00
  • window.location 对象所包含的属性

    前端开发中常用到window.location对象,该对象包含了当前页面的URL信息。下面详细讲解window.location对象所包含的属性及其作用: window.location.href window.location.href返回当前页面的URL地址,也可以修改该属性来跳转页面。 示例1: //返回当前页面URL console.log(wind…

    JavaScript 2023年6月11日
    00
  • js替代copy(示例代码)

    JS替代Copy是指使用JavaScript实现复制文本到剪贴板的功能,从而替代传统的复制操作。以下是实现此功能的完整攻略: 1. 导入Clipboard API JavaScript提供了Clipboard API,可以用来读写剪贴板内容。要使用它,需要在代码中导入该API。示例代码如下: import ClipboardJS from ‘clipboar…

    JavaScript 2023年6月11日
    00
  • 关于JS中match() 和 exec() 返回值和属性的测试

    了解您的需求后,以下是关于JS中match()和exec()方法的回答。 什么是match()和exec()方法? match()和exec()是JavaScript中用于字符串匹配的方法。它们都接受一个正则表达式作为参数,并返回一个匹配结果。 match()方法会在字符串中找到所有匹配正则表达式的部分,并返回这些部分组成的数组。 exec()方法会在字符串…

    JavaScript 2023年6月10日
    00
  • 一文读懂JS中的var/let/const和暂时性死区

    一文读懂JS中的var/let/const和暂时性死区 在 JavaScript 中,变量声明语句有三种:var、let 和 const。除此之外,ES6 引入了新的概念——暂时性死区。 var var 是 ES5 中引入的声明变量的关键字,它的作用域是函数作用域或全局作用域。使用 var 声明的变量可以在函数内部或全局范围内访问(也可以在任意位置声明,在函…

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