2016-05-01 61 views
-2

寻找文本是否为微粒格式的正则表达式是什么?寻找特定格式文本的正则表达式

格式应该遵循: AAAA-123AAAA123(具有或不具有短划线)

当第一4个字符的范围是AM字母和下面的3个字符与299

一个最大数

实施例:

ABCD-299将匹配

ABZR-301将不匹配

+0

来包装它这对于正则表达式来说似乎是一个糟糕的用例。测试前四个字符,最后三个字符遵循您的规则。 –

+3

[上午] {4} - ?[0-2] [0-9] {2} – smerny

+0

@ElliottFrisch我认为这是一个正则表达式的完美案例 –

回答

1
[A-M]{4}-?[0-2][0-9]{2} 

基本上:
[A-M]{4} =任何字母4 AM
-? =任选的破折号
[0-2] =单个0,1或2
[0-9]{2} = 2的任何数量的

将第一个数字限制为0-2将您的数字限制为299,并允许000-299

我不确定你是在一个字符串中搜索这个字符串还是检查一个字符串是否等于这个......并且这个上下文可能会改变你如何使用上面的。例如,如果你正在测试一个字符串,你会想要用^$

+0

感谢您解释它,现在我实际上更好了 –

0
^[A-M]{4}-?[0-2][0-9]{2}$ 

^意味着串

[]的开头定义一组可能匹配的。在这种情况下,大写字母A一直到大写字母M(在[]内表示范围时,连字符是一个特殊字符)(注意范围使用ascii http://www.asciitable.com/,所以如果你做了Az,它将包括所有那些非字母数字字符之间的数字)

{} define count。在这种情况下,正好为 4.您可以定义一个范围,如{1,3}表示1至3,或{,7}至多7,或{5,}至少5

和?意味着焦炭以前都是可能会或可能不会存在。在这种情况下,连字符。

$表示字符串的结尾

^和$是我认为必要的。否则该正则表达式将匹配AAAAAAAA-2342347474

反正,阅读正则表达式。他们可以强大而有趣。 http://regexr.com/

+0

我以为'^'的意思不是 –

+0

@MitchellGharechedaghi'^'可能有两个特殊的含义。如果它放在字符集内,并且它是第一个字符,比如'[^ a-z]',那么这个字符集就是否定的。所以在这种情况下,'[^ a-z]'表示任何在'a-z'范围内不是*的字符。但是如果将它放置在任何字符集之外,那么它表示锚代表文本的开始(它也可以被设置为表示行的开始,但是您将需要使用多行标记)。 – Pshemo