簡體   English   中英

帶星號的JavaScript模式匹配

[英]JavaScript Pattern Matching with Asterisks

我想做一些檢查字符串是否像這樣的事情:

https://www.example.com/page

等於:

http*//*example.com/*

或類似的東西。 JS內置了一些帶有星號的功能,還是我應該使用插件或其他功能?

沒有內置功能可以執行您所描述的內容。 但是,請看一下正則表達式 ,它們是通用版本。 在您的情況下,正則表達式可能是/^http.*\\/\\/.*example\\.com.*$/

例:

 var rex = /^http.*\\/\\/.*example\\.com.*$/; function test(str) { console.log(str, rex.test(str)); } test("https://www.example.com/page"); // true test("ttps://www.example.com/page"); // false 

您可以嘗試match()函數

 let str = 'https://www.example.com/page'; let strMatches = str.match( /http([\\s\\S]*?)\\/\\/([\\s\\S]*?)example.com([\\s\\S]*?)/ ); let result = document.querySelector('#result'); if( strMatches!= null && strMatches.length > 0 ){ result.innerHTML = 'Match'; } else { result.innerHTML = 'Mismatch'; } 
 <div id="result"></div> 

我能夠創建一個執行此操作的函數,但感謝大家的回答。 我將在下面發布代碼。

var wildcardCheck = function(i, m) {
   var regExpEscape = function(s) {
       return s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
   };
   var m = new RegExp('^' + m.split(/\*+/).map(regExpEscape).join('.*') + '$');
   return i.match(m) !== null && i.match(m).length >= 1;
};

暫無
暫無

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

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