浅谈JS正则表达式的RegExp对象和括号的使用

浅谈JS正则表达式的RegExp对象和括号的使用

正则表达式是一种用来精确匹配字符串的工具,而JavaScript中的RegExp对象可以帮助我们在代码中使用正则表达式。

RegExp对象

在JavaScript中,RegExp对象可以通过构造函数创建:

// 创建正则表达式
const regex = new RegExp('ab+c');

// 或者
const regex = /ab+c/;

这两种方式都可以创建一个正则表达式对象,其中 /.../ 的写法更为简洁和常用。

RegExp对象的方法:

  • test(str):测试字符串str是否匹配正则表达式,返回true或false;
  • exec(str):在字符串str中查找匹配正则表达式的子串,返回一个数组包含子串的信息(第0项是匹配的完整子串)或null。如果在正则表达式中使用了括号,则数组中的后面项是括号匹配的子串。

下面对这两个方法进行一些实例说明。

test方法

const regex = /ab+c/;
const str1 = 'abc';
const str2 = 'ac';

console.log(regex.test(str1)); // true
console.log(regex.test(str2)); // false

在这个例子中,由于正则表达式中有ab+的匹配规则,所以str1中的abc匹配成功,返回true;而str2中的ac不符合正则表达式,所以匹配失败,返回false。

exec方法

const regex = /^(\d{4})-(\d{2})-(\d{2})$/;
const str = '2021-07-22';

const result = regex.exec(str);

console.log(result);
/* 输出为数组
[ '2021-07-22', '2021', '07', '22', index: 0, input: '2021-07-22', groups: undefined ]
*/

在这个例子中,正则表达式/^(\d{4})-(\d{2})-(\d{2})$/匹配的是日期格式的字符串。代码中使用了括号将年、月、日三个部分分别提取出来。由于在正则表达式中使用了括号,返回数组中除了匹配的完整字符串外,还有额外的3项分别是括号匹配的子串。

括号的使用

在正则表达式中,圆括号()具有分组的作用,它可以将一些部分分为一组,方便在匹配后得到对应的子串。另外,括号还可以用来构建子模式。

分组

const regex = /(\d{3})(\d{2})/;
const str = '12345';

const result = regex.exec(str);

console.log(result);
/* 输出为数组
[ '12345', '123', '45', index: 0, input: '12345', groups: undefined ]
*/

在这个例子中,正则表达式/(\d{3})(\d{2})/匹配的是连续的数字字符串。使用了两个括号将前三个数字和后两个数字分别分为一组,在执行exec方法后,返回的数组中除了匹配的整个字符串之外,还有两项是括号匹配的子串。

子模式

子模式指的是可以在正则表达式中嵌套其他正则表达式,构建更为复杂的匹配规则。

以下是一个例子:

const regex = /^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/;
const str = '2021-07-22 11:30:01';

const result = regex.exec(str);

console.log(result);
/* 输出为数组
[ '2021-07-22 11:30:01',
  '2021',
  '07',
  '22',
  '11',
  '30',
  '01',
  index: 0,
  input: '2021-07-22 11:30:01',
  groups: undefined ]
*/

正则表达式/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/匹配的是日期和时间格式的字符串。其中的子模式(\d{2}):(\d{2}):(\d{2})是指匹配两个数字和一个冒号,这个子模式在整个正则表达式中作为一部分使用。

总结

JavaScript中的RegExp对象可以帮助我们使用正则表达式来处理字符串。括号在正则表达式中有分组和子模式两种用法,分别可以将一些部分分组和构建复杂的匹配规则。在实际中,需要根据情况选择不同的正则表达式来完成需要的任务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈JS正则表达式的RegExp对象和括号的使用 - Python技术站

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

相关文章

  • 前端 JavaScript运行原理

    前端 JavaScript 运行原理是指在浏览器中,JavaScript 代码是如何被解析,执行和呈现的过程。整个过程可以分为以下几个阶段: 词法分析阶段:浏览器首先会对 JavaScript 代码进行词法分析,将代码分解为一个个 token,包括语句、变量名、操作符等。每个 token 都有自己的类型和意义。 语法分析阶段:浏览器在词法分析的基础上,对 T…

    JavaScript 2023年5月27日
    00
  • JS验证逗号隔开可以是中文字母数字

    JS验证逗号隔开可以是中文字母数字,一般用于输入框中输入多个值,用逗号隔开这种需求。下面是一个使用 JavaScript 进行验证的完整攻略: 1. 正则表达式验证 为验证输入的内容是否符合要求,可以使用正则表达式进行验证。下面的正则表达式可以验证输入的内容是否为逗号隔开的中文字母数字组合: /^[a-zA-Z0-9\u4e00-\u9fa5]+(,[a-z…

    JavaScript 2023年6月10日
    00
  • 基于js原生和ajax的get和post方法以及jsonp的原生写法实例

    了解您的要求后,我将详细讲解基于js原生和ajax的get和post方法以及jsonp的原生写法实例。具体攻略如下: 1. 基于JS原生的get方法 JS原生的get方法可以通过XMLHttpRequest对象来发送GET请求,以下是一个简单的示例代码。 function sendGetRequest(url, callback) { var xhr = n…

    JavaScript 2023年5月27日
    00
  • JavaScript中的this关键字用法详解

    接下来我将为大家详细讲解“JavaScript中的this关键字用法详解”的攻略。 什么是this关键字 在JavaScript语言中,this关键字表示当前执行代码的对象。 具体而言,this指向根据当前所处的上下文环境而变化的一个关键字。这个上下文环境可以是全局环境、函数环境,或者是在某个对象中调用。 this关键字的四种调用方式 在JavaScript…

    JavaScript 2023年6月10日
    00
  • JavaScript异常处理

    JavaScript异常处理可以帮助开发人员减少代码中的错误,提高代码的健壮性和稳定性。在 JavaScript 中,异常是由错误或异常条件引起的程序流控制中的偏差,也就是程序出了问题。 JavaScript异常处理通常使用 try-catch 语句块实现。try 语句块包含可能引发异常的代码,而 catch 语句块用于捕捉异常并处理它们。以下是一个基本的 …

    Web开发基础 2023年3月30日
    00
  • ES6基础语法之对象介绍

    ES6基础语法之对象介绍 在ES6中,新的语法规范,对象展开操作符、对象方法、计算属性名以及内置Object属性等,在对象的定义与操作中起到了很大的作用。 对象基础 在ES6中,我们可以通过对象字面量的方式来创建一个对象,如下所示: let obj = { name: ‘张三’, age: 18, sex: ‘男’ }; ES6还引入了一个新的关键字let来…

    JavaScript 2023年5月27日
    00
  • JavaScript常见手写题超全汇总

    JavaScript常见手写题超全汇总 1. 前言 在面试以及实际工作中,常常需要手写一些核心的JavaScript代码。这些手写题目可能比较简单、或者非常复杂,但是它们都对JavaScript基础功夫有一个更加深刻的理解。 在本篇文章中,我们将会汇总一些常见的JavaScript手写题,包括但不限于:数组去重、深拷贝、Promise实现、函数柯里化等等。 …

    JavaScript 2023年5月18日
    00
  • JavaScript中的console.trace()函数介绍

    JavaScript中的console.trace()函数介绍 简介 console.trace() 函数用于在控制台输出当前代码运行的栈信息,即函数调用时的函数调用链。它可以帮助我们更好地理解程序的执行过程,找出代码中的错误或瓶颈所在。 语法 console.trace(); 示例 示例一 我们可以通过一个示例来演示 console.trace() 函数的…

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