2015-08-10 4 views
-1

Как я могу сопоставить два числа, каждый из которых предшествует знакам доллара и дефисом между ними, например «1000 - 2000 долларов». Я бы хотел получить полный диапазон с включенными знаками доллара.Regex для соответствия диапазону номеров?

'$ 1000 - $ 2000'

Другие примеры:

'$ 30 - $ 40'

'$ 1- $ 2'


я пробовал: ([\$0-9, -]*){1} Безразлично» t, когда есть символы раньше.

+4

Вы можете соответствовать '$ 1000 - $ 2,000' в строке' $ 1000 - $ 2,000', используя регулярное выражение '*'.. Чтобы получить хороший ответ на вопрос о регулярном выражении, вам нужно быть более ясным: 1) какие переменные вещи вы хотите сопоставить, 2) какие вещи выглядят одинаково, что вы * не * хотите сопоставлять, и 3) то, как выглядит вход, содержит вещи из 1) и 2) – Gareth

+0

Для фактического шаблона «$ 1,000 - $ 2000» или для чего-либо в этом диапазоне со знаком доллара и запятой для тысяч? – isosceleswheel

+0

как насчет десятичных знаков '.', двух цифр или без' .'? как насчет ведущих нулей? Является ли ',' необязательным или вам нужно создавать группы из 3-х цифр? Является ли количество пробелов между оппонентами? Является ли '' 'обязательным? Есть ли верхняя граница? Вы также принимаете отрицательные суммы? – maraca

ответ

1
\$1[0-9][0-9][1-9]\s 

Это кажется просто мне ... если вы за исключением 1000 и 2000 ... если это в том числе 1000 и 2000 затем

\$((1[0-9][0-9][0-9])|(2000))\s 

Существует, конечно, экологически чистых способов сделать это. .. но это сделает работу

********************** редактировать *************** **********

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

\$[0-9]*\s?\-\s?\$[0-9]*\s? 

знак доллара следует любому количество номеров,

опционального белое пространство,

тир,

опционального белое пространство,

знака доллара следует любым цифры,

опционально пробел.

+1

вы можете удалить фигурные скобки около 2000 и другие числа, и вы могли бы написать [0-9] {3}, но является ли это чище или нет, вероятно, вопрос вкуса. – maraca

+0

@maraca Согласовано ... это показалось мне быстрым ... – Seanoseanohay

0

Чтобы использовать «$ 1,000 - $ 2000», вы просто используете «$ 1,000 - $ 2000» в качестве обычного выражения. Для того, чтобы соответствовать что-нибудь в диапазоне 1000 - 2000 с форматом $ х, ххх, используйте регулярное выражение:

'\$1,\d{3}|\$2,000' 

Чтобы соответствовать любой диапазон между с 1000 в качестве нижней границы и 2000 в качестве верхней границы в формате $ х ххх - $ х, ххх, используйте регулярное выражение:

'\$1,\d{3}|\$2,000 - \$1,\d{3}|\$2,000' 
+0

'\ $ [12], \ d {3}' соответствует '2,999' –

+0

@alphabravo oops, good point. Ред. – isosceleswheel