2014-01-23 2 views
-1

Hi I требуется регулярное выражение Java, чтобы соответствовать любой из следующих характеристик:Java регулярное выражение для диапазона номеров

1,2,3 Вт, т.е.: 1W или 2W или 3W и т.д., и т.д.
1,2,3 , 4,5,6,7,8,9,10,11,12 M
1,2 Y

Я попытался с помощью следующих, но он не работает правильно

[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] Дж)

Я не вижу что вы хотите найти слово в начале строки, поэтому нет никакой необходимости в^и $

Испытано с regexpal

Смежные вопросы