В чем разница между $ ('# div') и _ $ ('div')? [закрыто]

Попробуйте с очень простым регулярным выражением.

^([-0][0-1][0-9][0-9][0-9])$|^([-0]20[0-4][0-9])$|^([-0]205[0-5])$

Визуальное представление

enter image description here [/g0]

Это очень просто понять.

  • группа 1 [-0][0-1][0-9][0-9][0-9] будет охватывать [-1999, 1999] значения
  • группа 2 [-0]20[0-4][0-9] будет охватывать [-2000, -2049] и [2000,2049] значения
  • группа 3 [-0]205[0-5] будут отображаться [-2050, -2055] и [2050, 2055] значения

String.format("%05d", number) делают очень хорошо

Пример кода: (Читайте встроенные комментарии для большей ясности.)

int[] numbers = new int[] { -10002, -3000, -2056, -2055, -2000, -1999, -20, 
                            -1,  0, 1, 260, 1999, 2000, 2046, 2055, 2056, 2955, 
                             3000, 10002, 123456 };

//valid range -2055 to 2055 inclusive

Pattern p = Pattern.compile("^([-0][0-1][0-9][0-9][0-9])$|^([-0]20[0-4][0-9])$|^([-0]205[0-5])$");

for (int number : numbers) {
    String string = String.format("%05d", number);
    Matcher m = p.matcher(string);

    if (m.find()) {
        System.out.println(number + " is in range.");
    } else {
        System.out.println(number + " is not in range.");
    }
}

output:

-10002 is not in range.
-3000 is not in range.
-2056 is not in range.
-2055 is in range.
-2000 is in range.
-1999 is in range.
-20 is in range.
-1 is in range.
0 is in range.
1 is in range.
260 is in range.
1999 is in range.
2000 is in range.
2046 is in range.
2055 is in range.
2056 is not in range.
2955 is not in range.
3000 is not in range.
10002 is not in range.
123456 is not in range.
-8
задан Yi Jiang 21 February 2012 в 11:31
поделиться