MCPcopy Create free account
hub / github.com/zxlie/FeHelper / matchOnePattern

Function matchOnePattern

apps/page-monkey/index.js:47–64  ·  view source on GitHub ↗
(pattern, url)

Source from the content-addressed store, hash-verified

45
46/* ===================== 匹配引擎(与 background 对齐) ===================== */
47const matchOnePattern = (pattern, url) => {
48 if (!pattern) return false;
49 let m = String(pattern).match(/^\/(.*)\/([gimsuy]*)$/);
50 if (m) { try { return new RegExp(m[1], m[2] || '').test(url); } catch (e) { return false; } }
51 if (pattern.indexOf('*') > -1) {
52 let p = pattern;
53 if (p.startsWith('*://')) p = p.replace('*://', '(http|https|file)://');
54 else if (p.indexOf('://') < 0) p = '(http|https|file)://' + p;
55 try {
56 return new RegExp('^' + p.replace(/\./g, '\\.').replace(/\//g, '\\/').replace(/\*/g, '.*').replace(/\?/g, '\\?') + '$').test(url);
57 } catch (e) { return false; }
58 }
59 let arr = [pattern, `${pattern}/`];
60 if (!pattern.startsWith('http://') && !pattern.startsWith('https://') && !pattern.startsWith('file://')) {
61 arr = arr.concat([`http://${pattern}`, `http://${pattern}/`, `https://${pattern}`, `https://${pattern}/`]);
62 }
63 return arr.includes(url);
64};
65
66const isMatchAll = (cm, url) => {
67 let inc = cm.mIncludes && cm.mIncludes.length ? cm.mIncludes : (cm.mPattern ? [cm.mPattern] : []);

Callers 2

isMatchAllFunction · 0.70
testRulePatternFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected