簡體   English   中英

正則表達式匹配不需要的字符串

[英]Regular expression matches unwanted strings

我正在嘗試使用正則表達式替換語句解決問題。 這是代碼:

var str1 = "bbb/mobile-main.min.js";
var str2 = "ttt/main.min.js";
var str21 = "mobile-main.min.js";
var str22 = "main.min.js";


var re = new RegExp("main\.min\.js" + "(\\?[0-9a-z]+)?", "g");

var ans1 = str1.replace(re, '$1main.78765.min.js');

var ans2 = str2.replace(re, '$1main.78765.min.js');

var ans21 = str21.replace(re, '$1main.78765.min.js');

var ans22 = str22.replace(re, '$1main.78765.min.js');

console.log("ans1: "+ ans1);

console.log("ans2: "+ ans2);

console.log("ans21: "+ ans21);

console.log("ans22: "+ ans22);

結果是:

   "ans1: bbb/mobile-main.78765.min.js"
   "ans2: ttt/main.78765.min.js"
   "ans21: mobile-main.78765.min.js"
   "ans22: main.78765.min.js"

我想要的結果只是要匹配的第二個字符串(str2):

"bbb/mobile-main.min.js"

"ttt/main.78765.min.js"

"mobile-main.min.js"

"main.78765.min.js"

這是jsbin的鏈接

我找不到符合我目標的正則表達式語句。謝謝!

編輯 :Jsbin鏈接已修復。

另一個限制:我不會總是在文件名的前面加上一些東西。 這應該有相似的結果(只有秒應該匹配):

mobile-main.min.js

mail.min.js

在所有條件下Edit2編輯代碼+ JSBin

您可以使用此正則表達式:

var re = new RegExp("(^|/)main\.min\.js" + "(\\?[0-9a-z]+)?", "g");

var ans1 = str1.replace(re, '$1main.78765.min.js'); // bbb/mobile-main.min.js
var ans2 = str2.replace(re, '$1main.78765.min.js'); // ttt/main.78765.min.js

JSBin演示

(^|/)確保僅在模式main\\.min\\.js開頭或之前替換/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM