代码之家  ›  专栏  ›  技术社区  ›  Kevin

需要正则表达式来匹配三个字符串

  •  1
  • Kevin  · 技术社区  · 16 年前

    我一般不去 regular expressions

    对于以下情况,我需要一个正则表达式。我将看三个字符串。如果第一个字符是 1-9 or the letters o,n,d (lower or upper) 第二个字符是 1,2 or 3 第三个字符是 0-9

    有人能帮我吗?

    6 回复  |  直到 10 年前
        1
  •  9
  •   JaredPar    16 年前

    其他几个答案略有不同。将输入限制为完全匹配的文本。

    
    ^[1-9ondOND][123][0-9]$
    
        2
  •  5
  •   Blair Conrad    16 年前
    [1-9ondOND][123][0-9]
    

    ^ $ (字符串的开头和结尾标记)因为你说过你会有三个字符串,但是把它们包括进去并没有什么害处,而且它们可以提高速度,这对这么短的输入来说不是什么大问题。

    o , n d O , N D

    对于python,您可以使用如下内容:

    re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)
    

    这个 re.match 在字符串的开头强制匹配,因此不需要 ^

        3
  •  2
  •   Nimantha Thatkookooguy    5 年前

    Perl正则表达式: /^[1-9ondOND][1-3][0-9]$/

    ^ 在字符串的开头;
    $

        4
  •  2
  •   Nfff3    5 年前
        5
  •  0
  •   Suganthan Madhavan Pillai    10 年前

    很晚才回答,但希望这会有所帮助

    ([1-9]|(?i)(o|n|d))[123][\d]
    

    http://regex101.com/r/vE2jT1/1

        6
  •  -2
  •   Matthew Scharley    16 年前

    在基于PREG的系统中(目前大多数):

    ^(?:[1-9]|[ond])[1-3][0-9]$
    

    /^(?:[1-9]|[ond])[1-3][0-9]$/