Попробуйте с очень простым регулярным выражением.
^([-0][0-1][0-9][0-9][0-9])$|^([-0]20[0-4][0-9])$|^([-0]205[0-5])$
Визуальное представление
[/g0]
Это очень просто понять.
[-0][0-1][0-9][0-9][0-9]
будет охватывать [-1999, 1999] значения [-0]20[0-4][0-9]
будет охватывать [-2000, -2049] и [2000,2049] значения [-0]205[0-5]
будут отображаться [-2050, -2055] и [2050, 2055] значения blockquote>
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.
Ваш PHP-код не выполняется, потому что сервер интерпретирует файл как текстовый файл, и поэтому коды не выполняются. Это связано с тем, что у вашего файла есть расширение .txt.
not sure how to get rid of the .txt suffix
Используйте любой редактор кода, например Notepad ++, чтобы сохранить файл как файл PHP, что избавит от расширения .txt.
Или для обычного блокнота Windows, просто выберите сохранить как «весь файл», а имя файла убедитесь, что только «index.php».