2017-03-09 48 views
2

我試圖用正則表達式如下要求 驗證字符串它不應該包含與./ 如何使用正則表達式來識別一組字符和數字以及組合符號?

  • 開始的任何符號,空格等

    1. 的字符串的文件路徑(UNIX)字符串以.XML結束
    2. 允許炭= a-zA-Z_-0-9./和一組@@ ENV
    3. @@ ENV可以在文件名

    I」的任何地方使用米新的正則表達式,我設法使用下面的正則表達式,它只涉及第一種情況,我希望@@ENV組之前和之後的文本被捕獲,他們應該是可選的。

    /^(.\/[a-zA-Z_\-0-9\.]+)+(@@ENV)\.(xml)$/ 
    

    例如,場景

    1. './app/settings/[email protected]@ENV.xml'
    2. './app/settings/@@ENV-conf.xml'
    3. 」 ./app/settings/系統 - @@ ENV-conf.xml中 '
    4. ' ./app/settings/@@ENV.xml」

    我有一個添加的樣本代碼在測試的jsfiddle下面

    資源:

  • +0

    在#3你聲明'允許的char = a-zA-Z_-0-9。和一個組@@ ENV'。但是你的每個例子似乎也允許'/'。 –

    +1

    ['^ \。\ /([a-zA-Z _ \ - 0-9。\ /] +)+ @@ ENV。*?\。xml $'](https://regex101.com/r/ eB0H1d/1)參見[Demo](https://jsfiddle.net/tusharj/u4pcnbLz/4/) – Tushar

    +0

    我錯過了它,我已經更新了這個問題。謝謝Moishe – tymspy

    回答

    1

    我會建議使用regex這樣的:

    (\.\/(?:[a-zA-Z_0-9-\/]*))@@ENV((?:[a-zA-Z_0-9-\/]*)\.xml) 
    

    要解釋什麼是怎麼回事:

    (\.\/(?:[a-zA-Z_0-9-\/]*)) 
    

    具有內部非捕獲組(?:[a-zA-Z_0-9-\/]*)匹配任何字母,數字,下劃線,連字符或正斜槓零次或多次。外部(捕捉)組還包含\.\/,它們首先匹配一個週期後跟一個正斜槓。

    匹配@@ENV後:

    ((?:[a-zA-Z_0-9-\/]*)\.xml) 
    

    具有匹配任何字母,數字,下劃線,連字符,或正斜槓零次或多次的內部非捕獲組(?:[a-zA-Z_0-9-\/]*)。外部(捕獲)組還包含\.xml,之後匹配一個句點,後跟單詞xml

    1

    希望這會工作。

    正則表達式:^\.\/([a-z\/\-]+)@@ENV[a-z\/\-]*(\.xml)$

    Regex demo

    相關問題