簡體   English   中英

正則表達式以匹配環境

[英]Regular expression to match environment

我正在使用JavaScript,並且正在尋找一個正則表達式來匹配占位符“環境”,這將是一個不同的值,例如“實際”字符串中的“生產”或“開發”。

正則表達式應該在兩個字符串中都匹配“環境”:

https://company-application-environment.company.local
https://application-environment.company.local

我努力了:

  • [^-]+$匹配environment.company.local
  • \\.[^-]+$匹配.company.local

如何獲得環境?

您可以基於正向前瞻使用此正則表達式:

/[^.-]+(?=\.[^-]+$)/

細節:

  • [^.-]+ :匹配非-和的任何字符的1+ .
  • (?=\\.[^-]+$) :先斷言我們有一個點和1+個非連字符到結束。

正則演示

碼:

 const urls = [ "https://company-application-environment.company.local", "https://application-environment.company.local", "https://application-production.any.thing", "https://foo-bar-baz-development.any.thing" ] const regex = /[^.-]+(?=\\.[^-]+$)/; urls.forEach(url => console.log(url.match(regex)[0]) ) 

不是最出色的reg exp,但是可以完成工作。

 const urls = [ "https://company-application-environment.company.local", "https://application-environment.company.local", "https://abcdef.foo.bar" ] urls.forEach(url => console.log(url.match(/-([^-.]+)\\./)[1]) ) 

匹配已知環境

 var tests = [ 'https://company-application-development.company.local', 'https://application-production.company.local', 'https://appdev.company.local', 'https://appprod.company.local' ]; tests.forEach(test => { var pattern = /(development|dev|production|prod)/g; var match = test.match(pattern); console.log(`environment = ${match}`); }); 

在這種情況下,最好的匹配方式是按字面意思使用您要查找的單詞。

並且,如果需要在environment位置匹配多個值,請使用RegEx or格式。 請參閱MDN

(production|development)

或者,您可以使用URL ,在-分割,並從數組中獲取最后一項。 然后在點上分割並獲得第一項。

 [ "https://company-application-environment.company.local", "https://application-environment.company.local" ].forEach(s => { let env = new URL(s).host.split('-').pop().split('.')[0]; console.log(env); }) 

暫無
暫無

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

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