JavaScript 的正则表达式可以用两种表达方式:
const s0 = /abc/i;
const s2 = new RegExp('abc', 'i');
这两种表达式等价。
JS 正则有两个属性,flags 和 source
console.log(s0.flags)
//> i
console.log(s0.source)
//> abc
flags 会输出它的标志,source 则输出它的正则匹配串。
利用这两个属性,就可以去拼接两个正则:
const s0 = /abc/i;
const s1 = /efg/gi;
// 连接所有 flags
let allFlags = s0.flags + s1.flags;
// 利用去除重复的 flags
let deDupFlagsSet = new Set(allFlags.split(''));
// 重新拼成 flags 字符串
let deDupFlags = Array.from(deDupFlagsSet).join('');
// 拼接两个正则
const s3 = new RegExp(s0.source + s1.source, deDupFlags);
console.log(s3)
//> /abcefg/gi
💥 注意 flags 需要去重,不然 RegExp 构造函数会抛出 SyntaxError 错误。
本文介绍了JavaScript中正则表达式的两种创建方式及其属性flags和source的使用。通过示例展示了如何拼接两个正则表达式,并确保flags的去重,以避免构造函数抛出SyntaxError错误。同时,讨论了在实际操作中对正则表达式进行合并和优化的重要性。
3640

被折叠的 条评论
为什么被折叠?



