正则表达式是用于匹配字符串的语法。在 JavaScript中,被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正则表达式语法,看这里!
法一 在加载脚本时就会被编译,性能高于法二。如果正则表达式不会改变,推荐使用法一。
// 法一:
var re = /ab+c/[flags];
// 法二:
var re = new RegExp("ab+c"[,flags]);
// flags 可用值 :g(全局匹配)、i(忽略大小写)、m(多行匹配)、s(点号匹配所有字符)、u(unicode)、y(sticky,粘性匹配)。
方法 | 描述 |
---|---|
RegExp方法,查找字符串中的匹配项,返回一个数组(未匹配返回 null) | |
RegExp方法,测试是否有匹配项,返回true或false | |
String方法,查找字符串中的匹配项,返回一个数组(未匹配返回 null) | |
String方法,查找字符串中所有匹配项,返回一个迭代器(iterator) | |
String方法,测试是否有匹配项,返回匹配项的位置索引,失败时返回-1 | |
String方法,查找字符串中的匹配项,并用指定字符串替换匹配项 | |
String方法,用指定字符串分割字符串,返回字符串数组 |
可以直接用 字面常量 来写正则表达式,再用 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
使用 RegExp 对象,来进行正则表达式匹配。
// RegExp语法:pattern 是正则表达式文本
new RegExp(pattern[, flags])
RegExp(pattern[, flags])
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."
}
可以使用 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);
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。