簡體   English   中英

JavaScript正則表達式匹配/以外的任何非空格字符

[英]JavaScript regex match any non white-space character except /

假設我有以下字符串:

/user/getMyId
/user/2423432
/user/32324/test
/user/32432232432
/user/sdafdsafdasfsda
/user/sdafdsafdasfsda?filter=sdafdsaf

我想要編寫一個與所有具有兩部分的URL匹配的正則表達式,除了第一個/user/getMyId 我的期望是它返回除第一個/user/getMyId和第三個/user/32324/test外的所有URL。

我當前的正則表達式如下:

/(:?(\/user\/(?!(getMyId))(\S+)))/

但這不起作用。

使用否定的字符類來匹配任何字符,但不能匹配空格或/

string.match(/^\/user\/(?!getMyId)[^\/\s]*$/m)

演示

 var data = [ "/user/getMyId", "/user/2423432", "/user/32324/test", "/user/32432232432", "/user/sdafdsafdasfsda", "/user/sdafdsafdasfsda?filter=sdafdsaf", "/user/sdafdsafdasfsda?filter=sdaf dsaf" ] var regex = /^\\/user\\/(?!getMyId)[^\\/\\s]*$/m; data.forEach(function(str){ console.log(str, regex.test(str)) }); 

由於您的例外情況有限,因此建議您制作一個處理/驗證例外情況的正則表達式,然后使用它進行過濾。

這樣,您可以創建例外列表,然后創建動態正則表達式

 var data = [ "/user/getMyId", "/user/2423432", "/user/32324/test", "/user/32432232432", "/user/sdafdsafdasfsda", "/user/sdafdsafdasfsda?filter=sdafdsaf" ]; var exceptions = ['getMyId', 'test'] var regex = new RegExp('/' + exceptions.join('|')); data.forEach(function(str){ console.log(str, regex.test(str)) }); var result = data.filter(x=> !regex.test(x)); console.log(result) 

暫無
暫無

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

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