これは、 ' - 'で区切られた名前と、数字と数字の両方が ' - 'で区切られていて、どれも誘導しない場合にうまく機能します。これは、URLの末尾に?pdf =という文字とnumberPartsの部分を戻します。
var value = "http://mysite/strategy/annual-plan-16-17.pdf";
var matches = value.replace(/([^\/\s]+)(.pdf)/g, "$1$2?pdf=$1");
console.log(matches)
これは、()で2つの群にマッチングを分割することによって行われ、これらは次のとおり
最初のものは[^/\ Sを使用してダッシュで区切られた名前を取ります。 ] + '\'、 '。'、または空白でない任意の数の文字を取得するには、基本的に '.pdf'のすべての文字を/の前に置きます。
この次のグループは、.pdf(明らかに)を使用して.pdfと一致します。 この一致は、マッチ全体+ pdf = +最初のグループに置き換えられます。
XXXXX-XXXXX-1111.pdfは、あなたがこれを使用することができ、?PDF = XXXXX-XXXXXを.PDFする御所ので、あなたは手紙の一部jsutたい場合。
var value = "http://mysite/strategy/annual-plan-16-17.pdf";
var matches = value.replace(/([^\/0-9]*[^-\/0-9])(-??[^/.]*)(.pdf)/g, "$1$2$3?pdf=$1");
console.log(matches)
これは()と3つのグループにマッチングを分割することによって行われ、これらは次のとおり
最初のものは、^ [使用ダッシュで区切られた名前を取り/ 0-。 9] *は、 '。'、 '/'、または数字以外の任意の文字を取得するために、[^ - 。/ 0-9]を使用して一致が ' - 'で終わらないことを確認します。これは、 - で区切られた単語と、数字を含まない単語を効果的にマッチさせます。
このグループでは - ??可能な限り一致するように(noneを含む)、[^ /] *は '^'や '/'を持たないものと一致します。これは、数字を含む - で区切られた単語と効果的にマッチします。
は.pdfと一致するように.pdfを使用します。あなたが確保したい場合、それはあなたが自分自身+?PDF = +最初に一致した基で置換されて$
この試合.PDF使用できる文字列の最後にありました。
に取り込むだけで内容を挿入://のstackoverflowを。 com/a/2759417/3832970)。 –
もちろん、それは素晴らしい提案であり、私はしばらくそれをやっています。現在私は物事を見つけることができますが、残念なことにこのレベルの洗練はありません。 – user3517217
'http://mysite/strategy/annual-plan.pdf?pdf = annual-plan'としたいですか?http://mysite/strategy/annual-plan-16-17.pdf?pdf =年次計画-16-17? –