前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解JavaScript的正则表达式

详解JavaScript的正则表达式

原创
作者头像
Learn-anything.cn
发布2021-12-26 11:57:11
5770
发布2021-12-26 11:57:11
举报
文章被收录于专栏:learn-anything.cnlearn-anything.cn
一、正则表达式

正则表达式是用于匹配字符串的语法。在 JavaScript中,被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正则表达式语法,看这里!


1、创建正则表达式

法一 在加载脚本时就会被编译,性能高于法二。如果正则表达式不会改变,推荐使用法一。

代码语言:txt
复制
// 法一:
var re = /ab+c/[flags];

// 法二:
var re = new RegExp("ab+c"[,flags]);

// flags 可用值 :g(全局匹配)、i(忽略大小写)、m(多行匹配)、s(点号匹配所有字符)、u(unicode)、y(sticky,粘性匹配)。

2、可用方法

方法

描述

RegExp方法,查找字符串中的匹配项,返回一个数组(未匹配返回 null)

RegExp方法,测试是否有匹配项,返回true或false

String方法,查找字符串中的匹配项,返回一个数组(未匹配返回 null)

String方法,查找字符串中所有匹配项,返回一个迭代器(iterator)

String方法,测试是否有匹配项,返回匹配项的位置索引,失败时返回-1

String方法,查找字符串中的匹配项,并用指定字符串替换匹配项

String方法,用指定字符串分割字符串,返回字符串数组


二、怎么用?
1、字面常量

可以直接用 字面常量 来写正则表达式,再用 exec() 方法执行。

代码语言:txt
复制
// 1、实例
var myRe = /ab*/g;
var str = 'abbcdefabh';
var myArray;
while ((myArray = myRe.exec(str)) !== null) {
  var msg = 'Found ' + myArray[0] + '. ';
  msg += 'Next match starts at ' + myRe.lastIndex;
  console.log(msg);
}

// 输出:
Found abb. Next match starts at 3
Found ab. Next match starts at 9
代码语言:txt
复制
// 2、实例:从 URL 中提取子域名
var url = "http://xxx.domain.com";
console.log(/[^.]+/.exec(url)[0].substr(7)); 
// 输出:xxx

2、RegExp对象

使用 RegExp 对象,来进行正则表达式匹配。

代码语言:txt
复制
// RegExp语法:pattern 是正则表达式文本
new RegExp(pattern[, flags])
RegExp(pattern[, flags])
  • 创建 RegExp 对象
代码语言:txt
复制
new RegExp('ab+c', 'i'); // 首个参数为字符串模式的构造函数
new RegExp(/ab+c/, 'i'); // 首个参数为常规字面量的构造函数
  • 实例
代码语言:txt
复制
const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;

while ((array1 = regex1.exec(str1)) !== null) {
    console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
    // expected output: "Found foo. Next starts at 9."
    // expected output: "Found foo. Next starts at 19."
}

3、String

可以使用 String 的方法来执行正则表达式。

代码语言:txt
复制
// 1、实例
let re = /(\w+)\s(\w+)/;
let str = "John Smith";
let newstr = str.replace(re, "$2, $1");
console.log(newstr);
// 输出为:Smith, John
代码语言:txt
复制
// 2、实例
var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

三、参考文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、正则表达式
    • 1、创建正则表达式
      • 2、可用方法
      • 二、怎么用?
        • 1、字面常量
          • 2、RegExp对象
            • 3、String
            • 三、参考文档
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档