文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript通过RegExp使用正则表达式的方法是什么

2023-07-05 18:58

关注

本篇内容介绍了“JavaScript通过RegExp使用正则表达式的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

RegExp

ECMAScript通过RegExp类型支持正则表达式。正则表达式使用类似Perl的简洁语法来创建:

let expression = /pattern/flags;

这个正则表达式的pattern(模式)可以是任何简单或复杂的正则表达式,包括字符类、限定符、分组、向前查找和反向引用。每个正则表达式可以带零个或者多个flags(标记),用于控制正则表达式的行为。下面给出了表示匹配模式的标记。

使用不同模式和标记可以创建出各种正则表达式,比如:

// 匹配字符串中的所有“at”let pattern1 = /at/g;//匹配第一个“bat”或者“cat”,忽略大小写let pattern2 = /[bc]at/i;//匹配所有以“at”结尾的三字符组合,忽略大小写let pattern3 = /.at/gi;

与其他语言中的正则表达式类似,所有元字符在模式中也必须转义,包括:

( [ { \ ^ $ | ) ] } ? * + .

元字符在正则表达式中都有一种或多种特殊功能,所以要匹配上面这些字符本身,就必须使用反斜杠来转义。下面是几个例子:

//匹配第一个“bat”或“cat”,忽略大小写let pattern1 = /[bc]at/i;//匹配第一个"[bc]at",忽略大小写let pattern2 = /\[bc\]at/i;//匹配所有以“at”结尾的三字符组合,忽略大小写let pattern3 = /.at/gi;//匹配所有".at",忽略大小写let pattern4 = /\.at/gi

这里的pattern1匹配”bat“或”cat“,不区分大小写。要直接匹配“[bc]at",左右中括号都必须像pattern2中那样使用反斜杠转义。

在pattern3中,点号表示"at"前面的任意字符都可以匹配。如果想匹配".at",那么要像pattern4中那样对点号进行转义。

前面例子中的正则表达式都是使用字面量形式定义的。正则表达式也可以使用RegExp构造函数来创建,它接收两个参数:模式字符串 和 (可选的)标记字符串。任何使用字面量定义的正则表达式也可以通过构造函数来创建,比如:

//匹配第一个“bat”或“cat”,忽略大小写let pattern1 = /[bc]at/i;//跟pattern1一样,只不过是用构造函数创建的let pattern2 = new RegExp("[bc]at","i");

这里的pattern1和pattern2是等效的正则表达式。注意,RegExp构造函数的两个参数都是字符串。因为RegExp的模式参数是字符串,所以在某些情况下需要二次转义。所有元字符都必须二次转义,包括转义字符序列,如\n (\转义后的字符串是\,在正则表达式字符串中则要写成\ \ \ \

字面量模式对应的字符串
/ \ [bc \ ]at/“\ \ [bc \ \ ]at”
/ \ .at/“\ \ .at”
/name \ /age/“name\ /age”
/ \d.\d{1,2}/“\ \d.\ \d{1,2}”
/ \ w\ \hello \ \123/“\ \w \ \ \ \hello\ \ \ \123”

此外,使用RegExp也可以基于已有的正则表达式实例,并可选择性地修改它们的标记:

const rel = /cat/g;console.log(rel); // "cat/g"const re2 = new RegExp(rel);console.log(re2); // "cat/g"

RegExp实例属性

每一个RexExp实例都有下列属性,提供有关模式的各方面信息。

let pattern1 = /\[bc\]at/i;console.log(pattern1.global); //falseconsole.log(pattern1.ignoreCase); //trueconsole.log(pattern1.multiline); //falseconsole.log(pattern1.lastIndex); //0console.log(pattern1.source); //"\[bc\]at"console.log(pattern1.flags); //"i"

RegExp实例方法

RegExp实例的主要方法是exec(),主要用于配合捕获组使用。这个方法只接受一个参数,即要应用模式的字符串。如果找到了匹配项,则返回包含第一个匹配信息的数组;如果没有找到匹配项,则返回null。返回的数组虽然是Array的实例,但包含两个额外的属性:index和input。index是字符串中匹配模式的起始位置,input是要查找的字符串。这个数组的第一个元素是匹配整个模式的字符串,其他元素是与表达式中的捕获组匹配的字符串。如果模式中没有捕获组,则数组只包含一个元素。来看下面的例子:

let text = 'mom and dad and baby';let pattern = /mom( and dad(and baby)?)?/gi;let matches = pattern.exec(text);console.log(matches.index); // 0console.log(matches.input); //"mom and dad and baby"console.log(matches[0]); //"mom and dad and baby"console.log(matches[1]); //" and dad and baby"

“JavaScript通过RegExp使用正则表达式的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯