一、JS正则表达式
var re = /[A-Z]{2}/g;
或
var re = new RegExp("[A-z]{2}", "g");
g
表示全局
i
表示不区分大小写
二、替换方法replace()
str.replace(regexp|substr, newSubStr|function)
该方法不替换字符串本身,只返回一个新替换后的字符串。
regexp (pattern)
一个正则对象或字面量substr (pattern)
一个将被newSubStr
替换的 字符串。newSubStr (replacement)
替换匹配部分的字符串function (replacement)
一个用来创建新子字符串的函数
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
console.log(p.replace('dog', 'monkey'));
//单词替换
const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
//不区分大小写的单词替换
const str = 'a-bb-cc'
console.log(str.replace(/\-[a-z]/g,(x) => {
return x.replace("-","").toUpperCase(); }
));
//通过函数转化字符串
const str2 = 'aBbCc';
console.log(str2.replace(/[A-Z]/g, (x) =>{
return '-'+match.toLowerCase()}
));
//通过函数转化字符串
替换字符串函数的参数
也可以在替换字符串中插入特殊变量名
变量名 | 代表的值 |
---|---|
$& | 插入匹配的子串。 |
$` | 插入当前匹配的子串左边的内容。 |
$’ | 插入当前匹配的子串右边的内容。 |
例如:
const str = 'aBbCc'
console.log(str.replace(/[A-Z]/g, '-'+"$&"
));
//a-Bb-Cc
三、匹配方法match()
str.match(regexp)
方法检索返回一个字符串匹配正则表达式的结果(数组)。
const str = 'aa-bb-cc';
console.log(str.match(/\-[a-z]/g));
// expected output: Array ["-b", "-c"]
四、matchAll()
方法
str.matchAll(regexp)
返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。
RegExp必须是设置了全局模式g的形式,否则会抛出异常TypeError。
const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';
const array = [...str.matchAll(regexp)];
console.log(array[0]);
// expected output: Array ["test1", "e", "st1", "1"]
console.log(array[1]);
// expected output: Array ["test2", "e", "st2", "2"]
matchAll()
与match()
的区别是,当使用 match()
和 /g
标志方式获取匹配信息时,捕获组会被忽略:
var regexp = /t(e)(st(\d?))/g;
var str = 'test1test2';
str.match(regexp);
// Array ['test1', 'test2']
五、search()
方法
str.search(regexp)
方法返回首次匹配成功时的索引,匹配失败则返回 -1。
类似于正则表达式的test()
方法,比match()
快一点。
var str = "hey JudE";
var re = /[A-Z]/g;
var re2 = /[.]/g;
console.log(str.search(re)); // returns 4, which is the index of the first capital letter "J"
console.log(str.search(re2)); // returns -1 cannot find '.' dot punctuation
参考链接:
[1] MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
[2] 常用正则 https://oktools.net/regex