为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式 Javascript 查找子字符串

使用正则表达式 Javascript 查找子字符串

烙印99 2022-09-02 21:17:41
如果我有这个,我怎么能找到特定标签的特定URL,是否可以获得特定的URL?categoryIdListscriptsconst categoryIdList = ["#travel", "#lifestyle", "#fnb", "#gadget_entertainment", "#dailyneeds", "#others_promo"]const scripts = `$(document).ready(function(){        $("#travel").click(function(){                                             $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=1");        });        $("#lifestyle").click(function(){                                                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=2");        });        $("#fnb").click(function(){                                                $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=3");        });        $("#gadget_entertainment").click(function(){                                               $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=4");        });        $("#dailyneeds").click(function(){                                                 $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=5");        });        $("#others_promo").click(function(){                                               $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=6");        });        $("#kartukredit").click(function(){                                                $("#contentpromolain2").load("ajax.promolainnya.php?product=1");        });        $("#simpanan").click(function(){                                                   $("#contentpromolain2").load("ajax.promolainnya.php?product=2");        });        $("#others").click(function(){                                             $("#contentpromolain2").load("ajax.promolainnya.php?product=3");        });        $("#ebanking").click(function(){                                                   $("#contentpromolain2").load("ajax.promolainnya.php?product=4");        });如何使用正则表达式获得该结果?或者JavaScript中的任何方法
查看完整描述

2 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

需要注意的是,这是一种非常脆弱的方法,并且依赖于 .load 方法中#id到 uri 的 1:1 映射,因此可以帮助您的正则表达式依赖于捕获组,并且可能如下所示:

/\$\(\"#.*\"\)\.click|\.load\(\".*\"\);/g

在此处查看其功能的细分:https://regex101.com/r/hD0zR5/7

您可以在脚本中使用该正则表达式将一组匹配项转换为数组,其中每 2 个数组项是键/值对。

只要你能保证这是真的(每个2个数组项都是一个键/值对),你就可以遍历数组并创建你要查找的对象。

由于您已经拥有,因此如果需要,可以在创建对象时使用这些值来验证键。categoryIdList

const scripts = `$(document).ready(function(){


        $("#travel").click(function(){                           

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=1");

        });


        $("#lifestyle").click(function(){                                

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=2");

        });


        $("#fnb").click(function(){                              

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=3");

        });


        $("#gadget_entertainment").click(function(){                             

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=4");

        });


        $("#dailyneeds").click(function(){                               

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=5");

        });


        $("#others_promo").click(function(){                             

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=0&subcat=6");

        });


        $("#kartukredit").click(function(){                              

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=1");

        });


        $("#simpanan").click(function(){                                 

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=2");

        });


        $("#others").click(function(){                           

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=3");

        });


        $("#ebanking").click(function(){                                 

                  $("#contentpromolain2").load("ajax.promolainnya.php?product=4");

        });

});`



const urls = {}

const matches = [...scripts.matchAll(/\$\(\"(#.*)\"\)\.click|\.load\(\"(.*)\"\);/g)]


for (let i = 0;i < matches.length;i += 2) {

  urls[matches[i][1]] = matches[i + 1][2]

}


console.log(urls)


查看完整回答
反对 回复 2022-09-02
?
HUH函数

TA贡献1836条经验 获得超4个赞

我认为您通常正在寻找的是此正则表达式:(https://regex101.com/r/jY8NBp/1"(.*?)")

这将使您在引号之间获得每个位,然后在创建对象时可以忽略中间的引号。


查看完整回答
反对 回复 2022-09-02
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信