如何在JavaScript中使用match()方法对动态变量进行不区分大小写匹配
解决方案
如果要在正则中使用动态变量,不能直接写正则字面量/test2/i,要使用RegExp构造函数生成正则实例:
const test1 = 'b' const test2 = 'B' // 第一个参数传入要匹配的变量值,第二个参数传入修饰符i实现不区分大小写 const matchRes = test1.match(new RegExp(test2, 'i')) console.log(matchRes) // 匹配成功会返回对应结果数组,匹配失败返回null
注意事项
如果你的匹配字符串中包含.、*、+这类正则特殊字符,需要先对变量内容做转义处理,避免匹配结果不符合预期:
// 正则特殊字符转义工具函数 function escapeRegExp(str) { return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') } // 使用示例 const test1 = 'a.b' const test2 = 'A.B' const reg = new RegExp(escapeRegExp(test2), 'i') console.log(test1.match(reg)) // 正确匹配
更简单的相等比较方案
如果你的需求只是判断两个字符串是否不区分大小写相等,不需要正则的复杂匹配能力,直接把两个字符串转成同大小写再比较性能更高,也没有特殊字符的处理问题:
const isCaseInsensitiveEqual = test1.toLowerCase() === test2.toLowerCase() console.log(isCaseInsensitiveEqual) // true

内容的提问来源于stack exchange,提问作者codelover
相关产品推荐
相关产品推荐

