使用正则表达式+变量的正则表达式

RegExp using regex + variables

本文关键字:正则表达式 变量      更新时间:2023-09-26

我知道在正则表达式中有很多关于变量的问题。例如:

  • 以regexp模式连接变量
  • regexp 中的变量如何在regexp中正确转义字符
  • 使用$和^
  • 正则表达式中的变量匹配字符串

不幸的是,它们都没有详细解释如何转义我的RegExp。

假设我想找到所有前面有这个字符串的文件:

file:///storage/sdcard0/

我试着用regex:

(?:file:'/'/'/storage'/sdcard0'(.*))(?:'"|'')

正确得到我的image1.jpg和image2.jpg在某些json文件。(尝试使用http://regex101.com/#javascript)

对于我的生命,我不能让这个工作在JS中。我知道你应该使用RegExp来解决这个问题,但我有问题。

var findStr =  "file:///storage/sdcard0/";
var regex =  "(?:"+ findStr +"(.*))(?:'"|'')";
var re = new RegExp(regex,"g"); 
var result = <mySearchStringVariable>.match(re);

有了这个,我得到1个结果,这是错误的(一堆文本)。我想我应该像网上所有人说的那样逃避这个……我试图用下面的两个函数来逃避findStr,结果是相同的。所以我想好吧,我也需要在正则表达式中转义一些字符。

我试图手动转义它们,结果不匹配。

我试图在将整个regex变量传递给RegExp构造函数之前转义它,结果是相同的:没有匹配。

function quote(regex) {
  return regex.replace(/([()[{*+.$^''|?])/g, '''$1');
}   
function escapeRegExp(str) {
    return str.replace(/['-'[']'/'{'}'(')'*'+'?'.'''^'$'|]/g, "''$&");
}   
我到底做错了什么?

是否有关于如何写RegExp与变量在它好的文档?

我所需要做的就是使用LAZY而不是贪心

var regex =  "(?:"+ findStr +"(.*?))(?:'"|'')"; // added ? in (.*?)