我一般都远离regular expressions
,因为我很少找到它们。但在这种情况下,我认为我没有选择。
我需要一个正则表达式来处理以下情况。我将看三个字符串。如果第一个字符为1-9 or the letters o,n,d (lower or upper)
且第二个字符为1,2 or 3
且第三个字符为0-9
,则匹配为。
有人可以帮帮我吗?
答案 0 :(得分:9)
其他一些答案略有不同。将输入限制为完全匹配的文本。
^[1-9ondOND][123][0-9]$
答案 1 :(得分:5)
[1-9ondOND][123][0-9]
我省略了^
和$
(字符串标记的开头和结尾),因为你说你有三个字符的字符串,但包含它们没有坏处,它们可能会提高速度并不是说在这么短的投入上这将是一件大事。
当然,这假设您使用的语言和语言环境中大写等值的o
,n
和d
为O
,{{1 }和N
。如果没有,你需要告诉你的正则表达式解释器忽略大小写。该机制因语言/框架而异。
对于python,你可以使用类似的东西:
D
re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)
强制在字符串的开头匹配,因此在任何情况下都不需要re.match
。
答案 2 :(得分:2)
Perl / ^ [1-9ondOND] [1-3] [0-9] $ /
^ =在字符串的开头,$ =字符串的结尾
答案 3 :(得分:2)
[1-9ond] [123] [0-9]
答案 4 :(得分:0)
答案 5 :(得分:-2)
在基于PREG的系统中(目前大部分都是这样):
^(?:[1-9]|[ond])[1-3][0-9]$
有些系统需要开始/结束标记(PHP,Perl,但不是.NET),如果有的话,它最终会像:
/^(?:[1-9]|[ond])[1-3][0-9]$/