![](/img/trans.png)
[英]Regex to split string at any white-space character but to isolate any line break character
[英]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.