2014-01-23 45 views
-1

您好我需要一个Java正则表达式匹配任何以下的:爪哇正则表达式数范围

1,2,3W¯¯即:1W 2W或3W或等,等
1,2,3 ,4,5,6,7,8,9,10,11,12 中号
1,2Ÿ

我曾尝试使用下面的尝试,但它不能正常工作

[0-2]{1}W|[1-12]{2}M|[1-2]{1}Y 

谢谢

+0

测试'[..]'是一个字符类。它不会做你认为它做的事情,它*不关心*内容碰巧是数字。 – user2864740

回答

3

试试这个:

^([1-3]W|(1[0-2]|[1-9])M|[12]Y)$ 

Here的解释是:

^  --> the beginning of the string 
    (  --> group and capture to \1: 
    [1-3] --> any character of: '1' to '3' 
    W  --> 'W' 
    |  --> OR 
    (  --> group and capture to \2: 
     1  --> '1' 
     [0-2] -->any character of: '0' to '2' 
    |  --> OR 
     [1-9] --> any character of: '1' to '9' 
    )  --> end of \2 
    M  --> 'M' 
    |  --> OR 
    [12] --> any character of: '1', '2' 
    Y  --> 'Y' 
)   --> end of \1 
    $   --> before an optional \n, and the end of the 
          string 

希望它能帮助。

1

我并不是那种经验丰富的正则表达式,但是, 试试把这三个机会分开。 例如:

([0-3] W)|((1 [0-2])|([1-9])M)|([12] j)

我没有看到要找到在一行的开头字, 所以没有必要^和$

regexpal