【发布时间】:2021-04-26 10:18:50
【问题描述】:
我正在尝试将我在 Chrome 中使用的脚本用于 safari。它使用后向正则表达式来跳过页面,但 Safari doesn't support that。它可以识别亚马逊 ASIN 并将链接放在一起。
这是我在网上某处找到的原始代码;
// ==UserScript==
// @name PartAlert
// @namespace http://tampermonkey.net/
// @version 1.1
// @description try to take over the world!
// @author You
// @match https://partalert.net/*
// @icon https://www.google.com/s2/favicons?domain=partalert.net
// @grant none
// ==/UserScript==
(function() {
'use strict';
var url = window.location.href;
var regexAsin= RegExp("(?<=asin=)(.+)(?=&price)");
var regexCountry= RegExp("(?<=tld=.)(.+)");
var mAsin = url.match(regexAsin);
var mCountry = url.match(regexCountry);
var finalSite = "https://www.amazon."+ mCountry[0]+ "/dp/" + mAsin[0] + "?tag=test";
// window.location.href = finalSite;
window.location.href = finalSite + "&psc=1&aod=1&condition=all"
})();
我尝试按照this question 中的建议替换后向正则表达式;
var regexAsin= RegExp("(?:asin=)(.+)(?=&price)");
var regexCountry= RegExp("(?:tld=.)(.+)");
但是当我替换这些 URL 时,URL 会变得混乱,并且在扩展名之前会有 tld=。
要测试此脚本,您可以使用this one 之类的网址。
【问题讨论】:
-
如果您捕获组包括您在后视中拥有的内容(例如
asin=.+)然后在构建finalSite时将其从匹配中删除(例如mAsin[0].slice(5)或mAsin[0].replace('asin=', ''))? -
...或者你可以使用
URL.searchParams(),如果你不需要支持旧浏览器 -
@secan 如果我从 finalSite 中删除 mCountry,那么 URL 将不完整?
标签: javascript safari tampermonkey lookbehind