详解JavaScript的正则表达式

一、正则表达式

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


1、创建正则表达式

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

// 法一:
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() 方法执行。

// 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
// 2、实例:从 URL 中提取子域名
var url = "http://xxx.domain.com";
console.log(/[^.]+/.exec(url)[0].substr(7)); 
// 输出:xxx

2、RegExp对象

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

// RegExp语法:pattern 是正则表达式文本
new RegExp(pattern[, flags])
RegExp(pattern[, flags])
  • 创建 RegExp 对象
new RegExp('ab+c', 'i'); // 首个参数为字符串模式的构造函数
new RegExp(/ab+c/, 'i'); // 首个参数为常规字面量的构造函数
  • 实例
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 的方法来执行正则表达式。

// 1、实例
let re = /(\w+)\s(\w+)/;
let str = "John Smith";
let newstr = str.replace(re, "$2, $1");
console.log(newstr);
// 输出为:Smith, John
// 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);

三、参考文档

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小