2017-03-09 47 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

    相关问题