我有兩個不同 $1 的正則運算式。在第一部分中,$1 之前有一個斜線,但在第二部分中沒有斜線。那么如何將它們組合成一個運算式呢?
const url = 'http://localhost////example///author/admin?query=1212';
clean_url = url.replace(/($|\?)/, "/$1").replace(/([^:]\/)\/ /g, "$1")
console.log(clean_url)
uj5u.com熱心網友回復:
由于這個問題是關于@nuxtjs/redirect-module,您可以使用多個重定向:
redirect: [{
from: '(.*)($|\?)(.*)',
to: '$1/$2$3'
}, {
from: '(.*)([^:]\/)\/ (.*)',
to: '$1$2$3'
}]
或替換功能
redirect: [{
from: '.*(?:(?:$|\?)|(?:[^:]\/\/ )).*',
to: from => from.replace(/($|\?)/, "/$1").replace(/([^:]\/)\/ /g, "$1")
}]
uj5u.com熱心網友回復:
您可以使用
const url = 'http://localhost////example///author/admin';
clean_url = url.replace(/($|\?)|([^:]\/)\/ /g, (x,y,z) => z ? z : '/' y);
console.log(clean_url);
// => http://localhost/example/author/admin/
正($|\?)|([^:]\/)\/ 則運算式匹配
($|\?)- 第 1 組 (y):字串結尾或?|- 要么([^:]\/)\/:-和 a/(Group 2, )以外的任何字符z,然后是一個或多個斜杠。
如果 Group 2 匹配,則替換為 Group 2 值,否則,替換為/ Group 3 值。
uj5u.com熱心網友回復:
不可能只“組合”這兩個正則運算式,但您可以組合任務,因為兩者都只是插入一個/具有不同條件的單個。
您可以將邏輯與lookbehinds(可能尚未在每個瀏覽器中都可用)結合起來,運算式令人厭惡,我會注意生產中的性能;但這是可能的;)
const url = 'http://localhost////example///author/admin?query=1212';
clean_url = url.replace(/(?<!\?.*)(?<![:\/])(?:\/ |\/*(?=\?)|\/*$)/g, "/")
console.log(clean_url)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429781.html
標籤:javascript 正则表达式
