正则表达式相关的节点操作支持使用(?i)指定忽略大小写匹配

This commit is contained in:
Peng-YM 2020-12-10 21:59:16 +08:00
parent 7eed0192bc
commit a6bf4e5c76
2 changed files with 15 additions and 9 deletions

View File

@ -77,9 +77,6 @@ function service() {
// rules API // rules API
$app.get("/download/rule/:name", downloadRule); $app.get("/download/rule/:name", downloadRule);
// gist backup
$app.get("/api/backup");
// Storage management // Storage management
$app.route("/api/storage") $app.route("/api/storage")
.get((req, res) => { .get((req, res) => {
@ -1788,7 +1785,7 @@ var ProxyUtils = (function () {
name: "Regex Sort Operator", name: "Regex Sort Operator",
func: (proxies) => func: (proxies) =>
proxies.sort((a, b) => { proxies.sort((a, b) => {
expressions = expressions.map(expr => new RegExp(expr)); expressions = expressions.map(expr => buildRegex(expr));
const oA = getRegexOrder(expressions, a.name); const oA = getRegexOrder(expressions, a.name);
const oB = getRegexOrder(expressions, b.name); const oB = getRegexOrder(expressions, b.name);
if (oA && !oB) return -1; if (oA && !oB) return -1;
@ -1819,7 +1816,7 @@ var ProxyUtils = (function () {
func: (proxies) => { func: (proxies) => {
return proxies.map((proxy) => { return proxies.map((proxy) => {
for (const {expr, now} of regex) { for (const {expr, now} of regex) {
proxy.name = proxy.name.replace(new RegExp(expr, "g"), now).trim(); proxy.name = proxy.name.replace(buildRegex(expr, "g"), now).trim();
} }
return proxy; return proxy;
}); });
@ -1923,8 +1920,7 @@ var ProxyUtils = (function () {
func: (proxies) => { func: (proxies) => {
return proxies.map((proxy) => { return proxies.map((proxy) => {
const selected = regex.some((r) => { const selected = regex.some((r) => {
r = new RegExp(r); return buildRegex(r).test(proxy.name);
return r.test(proxy.name);
}); });
return keep ? selected : !selected; return keep ? selected : !selected;
}); });
@ -3077,6 +3073,16 @@ function clone(object) {
return JSON.parse(JSON.stringify(object)); return JSON.parse(JSON.stringify(object));
} }
function buildRegex(str, ...options) {
options = options.join("");
if (str.startsWith("(?i)")) {
str = str.substring(4);
return new RegExp(str, 'i' + options);
} else {
return new RegExp(str + options);
}
}
/****************************************** Own Libraries *******************************************************/ /****************************************** Own Libraries *******************************************************/

File diff suppressed because one or more lines are too long