Регулярное выражение: числовой диапазон

Если вы можете просто изменить значение href, вы должны использовать:

<a href="javascript:void(0);">Link Title</a>

Еще одно опрятное решение, с которым я только что придумал, - это использовать jQuery, чтобы остановить действие click. страницы для прокрутки, но только для ссылок href="#".

<script type="text/javascript">
    /* Stop page jumping when links are pressed */
    $('a[href="#"]').live("click", function(e) {
         return false; // prevent default click action from happening!
         e.preventDefault(); // same thing as above
    });
</script>
29
задан Morten 4 September 2009 в 08:21
поделиться

7 ответов

Самый простой способ сделать это - проанализировать строку как число и найти число в правильном диапазоне.

Чтобы сделать это с чистым регулярным выражением, вам нужно определить шаблон и запишите его:

^(0?[0-9]{1,2}|1[0-7][0-9]|180)$

У него есть три альтернативы: одна для одно- и двузначных чисел (разрешая ведущие нули), где каждая цифра может быть от 0 до 9. И еще одна, определяющая диапазон цифр. разрешено для каждой цифры в трехзначном числе. В данном случае это означает, что первая цифра должна быть 1, вторая от 0 до 7, а последняя может быть чем угодно. Третья альтернатива предназначена только для числа 180, которое не вписывалось в шаблон в другом месте.

Более простой подход мог бы быть

^(0{0,2}[0-9]|0?[1-9][0-9]|1[0-7][0-9]|180)$

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

29
ответ дан 28 November 2019 в 00:53
поделиться

Я не думаю, что регулярное выражение - правильный выбор для этого. Вы пробовали разобрать значение? Если вам нужно использовать регулярное выражение, я бы сопоставил \ d {1,3} , проанализировал строку, а затем подтвердил число в коде.

34
ответ дан 28 November 2019 в 00:53
поделиться

Мои два цента:

Любой, кто отправляет ответ на этот вопрос , должен был протестировать свое регулярное выражение , по крайней мере, со следующими входными данными:

Должно совпадать: 0, 00, 000, 5, 05, 005, 95, 095, 180

НЕ ДОЛЖНЫ совпадать: 0000, 0095, 181, 190

Я думаю, что то, что написал Йоханнес Рёссель, примерно так же хорошо, как и вы:

^(0?[0-9]{1,2}|1[0-7][0-9]|180)$
3
ответ дан 28 November 2019 в 00:53
поделиться

Попробуйте следующее:

^(0|[1-9][0-9]?|1[0-7][0-9]|180)$
2
ответ дан 28 November 2019 в 00:53
поделиться

Я бы разбил диапазоны, чтобы его можно легко указать в отдельном регулярном выражении:

^ (0 | 0 [0-9] [0-9] | 1 [0-7] [0-9] | 180) $

Или, что то же самое в удобочитаемых терминах:

0
000-099
100-179
180

Если вам нужен диапазон из двух цифр, достаточно добавить [0-9] [0-9] в регулярное выражение.

Кроме того, если у вас проблемы с регулярным выражением,

1
ответ дан 28 November 2019 в 00:53
поделиться

, если вас не интересуют отрицательные числа

>> r = /\b(0?\d?\d|1[0-7]\d|180)\b/
=> /\b(0?\d?\d|1[0-7]\d|180)\b/
>> (0..200).map {|i| i.to_s =~ r }
=> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
>> 
0
ответ дан 28 November 2019 в 00:53
поделиться

Я модифицировал Гамбо:

^(00?0?|0?[1-9][0-9]?|1[0-7][0-9]|180)$

Попробуй.

0
ответ дан 28 November 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: