簡體   English   中英

正則表達式匹配除“ .js”以外的所有字符

[英]Regex match all characters except “.js”

我正在嘗試使用javascript將模塊名稱與其路徑分開。 我正在接收正則表達式的字符串的末尾可能帶有“ .js”,也可能沒有,但是在第二個匹配組中,如果那里存在“ .js”,則不需要。 到目前為止,這是正則表達式:

([\.\/]?.+\/)?(.+[\.js]?)

例如,如果我有字符串:./piechart.js

比賽組1:./

比賽組2:餅圖

更多測試/示例: https//regex101.com/r/nL9lK3/1

我建議先過濾字符串,然后對其進行正則表達式以檢索模塊名稱。

function getModule (filePath) {
    var arr = filePath.split('/');
    var len = arr.length;

    var path = arr.splice(0, arr.length - 1).join('/');
    var moduleName = arr[0].match(/([a-zA-Z\-\_]+)(?=(\.js)?)/gi)[0];

    return [path, moduleName];
}

此函數將返回pathmoduleName的數組。

所以試試這個

(\\/?.+\\/)*(.+?)(\\.js)?$

並僅使用前兩個匹配的組(這是更新的regex101 )。

第一組: (\\/?.+\\/)*匹配所有可能的路徑,以最后一個斜杠結束。

第二組: (.+?)匹配路徑中的所有內容,但帶有一個惰性量詞,如果可以的話,允許第三組進行匹配。

第三組: (\\.js)? 在字符串末尾匹配可能的.js

暫無
暫無

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

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