Skip to content

正则 API

String.match

js
"We will, we will rock you".match(/we/gi); // [ 'We', 'we' ]

有 g 匹配多个,无 g 匹配单个。

返回 null/Array,但是这个 Array 很奇怪。

无 g 时候,Array 第一个为匹配项

todo

String.matchAll

matchAll 返回可迭代

str.search(regexp) 返回第一个匹配项的位置,没有返回 -1。

search 有且只能找 第一个

String.split

使用 正则表达式 来分割字符串。

js
"12-34-56".split(/[,\s*-]/);

String.replace

https://www.yuque.com/qinsjs/jsinfo/wtdamli9znem4l76

todo

replace 默认只会替换第一个

js
"We will, we will".replace(/we/i, "I");
// 'I will, we will'

"We will, we will".replace(/we/gi, "I");
// 'I will, I will'

String.replaceAll

https://www.yuque.com/qinsjs/jsinfo/go8pnlglcn0yf77l

todo

RegExp.test

https://www.yuque.com/qinsjs/jsinfo/wtdamli9znem4l76

返回 true/false 表示是否存在

如果正则表达式带有修饰符 g,则 regexp.test 从 regexp.lastIndex 开始查找,就像 regexp.exec 一样

带 g 时,注意 regexp.lastIndex!

js
/LOVE/gi.test("I love JavaScript"); // true
/LOVE/gi.test("I love JavaScript"); // false

RegExp.exec

没有 g,regexp.exec(str) 会返回第一个匹配项。

有 g

js
let str = "More about JavaScript at https://javascript.info";
let regexp = /javascript/gi;

let result;

while ((result = regexp.exec(str))) {
  alert(`Found ${result[0]} at position ${result.index}`);
}

// 在位置 11 找到了 JavaScript,然后
// 在位置 33 找到了 javascript