2012-03-29 5 views
0

Возможно ли создать регулярное выражение, которое соответствует сравнению, например, меньше или больше? Например, сопоставьте все долларовые значения менее 500 долларов США.Выражения регулярных выражений для сопоставления совпадений

Один из способов использовать это будет в интернет-магазинах, которые перечисляют множество продуктов на одной странице, но не предоставляют способ сортировки по цене. Я нашел страницу поиска с расширением regex для Chrome и пытаюсь выяснить, есть ли способ, которым я могу использовать регулярное выражение, чтобы соответствовать строкам на странице, начинающейся со знака доллара, за которым следует любое число, меньшее числа, которое я указываю.

ответ

2

Это должно сработать для вас \$[1-4]?\d?\d\b.

Объяснение:

r""" 
\$  # Match the character “$” literally 
[1-4] # Match a single character in the range between “1” and “4” 
    ?  # Between zero and one times, as many times as possible, giving back as needed (greedy) 
\d  # Match a single digit 0..9 
    ?  # Between zero and one times, as many times as possible, giving back as needed (greedy) 
\d  # Match a single digit 0..9 
\b  # Assert position at a word boundary 
""" 
+0

Обратите внимание, что менее 500 означает до 499.99, но не более:> Также вы не указали значения центов. –

+0

@BenjaminUdinktenCate Это регулярное выражение может быть легко изменено, если значения центов также необходимо учитывать. –

+0

это также соответствует значениям свыше $ 500. Редактирование: не вернее, извините :) –

1

Это может делать то, что вам нужно: ^(\$[1-4]?\d?\d)$. Это будет соответствовать любому значению между $1 и $499.

Как указано выше, если вы хотите совместить даже десятичные значения, вы можете использовать примерно так: ^(\$[1-4]?\d?\d(\.\d{2})?)$. При этом числовая валидация в идеале должна быть выполнена с использованием реальных математических операций, а не регулярных выражений.

+0

Это соответствовало бы одному '' $ '' также ... –

+0

@BartKiers: Да, вы правы. Я внесла поправки в свой результат и предоставил еще одну услугу для центов. – npinti

0

Edit: это слишком сложно, но он также будет соответствовать любое значение строго меньше 500

\$[1-4]\d{2}(\.\d{2})?$|\$\d{1,2}(\.\d{2})?$ 

, если вам нужно, чтобы соответствовать $500, а также, добавить еще |\$500(\.00)?$

Совпадение:

\$   the dollar symbol 
[1-4]   followed by a digit between 1 and 4 
\d{2}   followed by exactly 2 digits 
(\.\d{2})? optionally -->()? followed by a dot --> \. and exactly 2 digits 
$    followed by end of line (may be replaced with \b for word boundaries) 
|    or 
\$\d{1,2}  the dollar symbol followed by any two digits 
(\.\d{1,2})?$ again optionally followed by cents, followed by end of line 
Смежные вопросы