2016-11-22 3 views
0

を終えていない私は2つの特定のエンドポイントを除いて唯一のAPI呼び出しを示すためにChromeのネットワークログで使用する正規表現が必要です。正規表現は「/ API」で始まるすべてのものに一致するが、「.JPG」または 『統計』

例をそれは/image-640x480.jpgまたは/statisticsで終わる場合を除き

http://localhost:8081/api/software-features 
http://localhost:8081/api/user-groups/logged-user-group 
http://localhost:8081/api/user-groups/%7B4D7E2585-32E3-4794-A0F3-4FE7D56D27AE%7D/permissions/system 
http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras 
etc... 

::。:

私は/api/を含むすべてのものを見せたい

http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras/0/streams/0/statistics 
http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras/0/streams/0/image-640x480.jpg 

この2つは常にフロントエンドから要求され、ログにノイズが発生します。

+1

正規表現は失敗していますが、正規表現を私たちに示していません。 – byxor

+0

https://regex101.com/自分で学習してみてください – arminb

+0

私はhttp://www.regexr.com/で試しましたが、すべてが失敗しています。私のregex-fooは非常に複雑なケースです。私はそれが必要でないなら、私は助けを求めていないだろう。私は、あなたがこの場所で「専門家の助けを借りる」ことができると言っているのですよね? –

答えて

1

/apiから始まり、代替案のカップルで終わらない文字列に一致するために、あなたは負の前後参照して正規表現を使用する必要があります。

^/api(?!.*(?:[.]jpg|statistics)$) 

詳細

  • ^ - 文字列の開始
  • /api - 文字列の先頭のリテラルテキスト
  • (?!.*(?:[.]jpg|statistics)$)から/api後改行記号以外の任意の0+文字が存在し、存在する場合に一致を失敗負先読み.jpg[.]jpg)または列($)の端(|statistics
1

正規表現ではなく、私はそれが問題を解決信じる:

あなたのサンプルでこれをしようと
(str.search(/\/api/i) >=0 && str.search(/\.jpg/i) == -1 && str.search(/\/statistics/i) == -1) 

const urls = [ 
    "http://localhost:8081/api/software-features", 
    "http://localhost:8081/api/user-groups/logged-user-group", 
    "http://localhost:8081/api/user-groups/%7B4D7E2585-32E3-4794-A0F3-4FE7D56D27AE%7D/permissions/system", 
    "http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras", 
    "http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras/0/streams/0/statistics", 
    "http://localhost:8081/api/servers/%7B499C3279-CD5D-402E-A60B-6AE0B5A21EE0%7D/cameras/0/streams/0/image-640x480.jpg" 
]; 

console.log([for (url of urls) (url.search(/\/api/i) >=0 && url.search(/\.jpg/i) == -1 && url.search(/\/statistics/i) == -1)]) 

// Array [ true, true, true, true, false, false ] 
1

あなたはそれがほとんどの正規表現で動作し、あまりにもthis regexを試すことができますエンジン

^.*\/api\/(?!.*(?:\.jpg|statistics)$).*$ 
    本の
  • ^マッチは、次の文字が何も.*.jpgまたはstatisticsが続くと、文字列の末尾であれば、試合が停止します、これは否定先読みで
  • (?!.*(?:\.jpg|statistics)$)
  • .*\/api\/\api\一致する文字列と、すべての開始
  • .*$は、負の先読みが一致しない場合、/api/の後にすべて一致します。
関連する問題