2013-10-04 5 views
0

У меня есть регулярное выражение, которое принимает платежи и суммы ниже. Позволяет использовать форматы с "$" "," и двумя десятичными пробелами. Мне нужно это регулярное выражение, чтобы конечные пробелы после знаков после запятой, как так '$50.00 'Нужно изменить регулярное выражение, чтобы принять конечные пробелы

/^\$?[0-9 ][0-9\, ]*(\.\d{1,2})?$|^\$?[\.]([\d][\d])$/ 

Мысли?

+0

Добро пожаловать в переполнение стека! Вы на самом деле попробовали это? Что случилось? Если вы не предоставите немного больше деталей, ваш вопрос, вероятно, будет закрыт/отложен. – Derek

ответ

1

\s* захватит any whitespace, включая вкладки и переводы строк:

/^\$?[0-9 ][0-9\, ]*(\.\d{1,2})?$|^\$?[\.]([\d][\d])\s*$/ 

Если вы просто пытаетесь проверить ценности доллара, я бы сделать это немного проще (хотя я не знаю, ваш точный случай использования):

/^\$?[0-9,]+(\.\d{2})?\s*$/ 
+0

Обратите внимание, что это не будет соответствовать '' $ 50.00''. –

+0

См. Редактирование с упрощенной версией. –

+0

Ваше второе регулярное выражение работает отлично. Благодаря! –

0

Просто добавив [ ]* до конца должен сделать трюк:

/^\$?[0-9 ][0-9\, ]*(\.\d{1,2})?[ ]*$|^\$?[\.]([\d][\d])[ ]*$/ 

Но вы можете упростить это, обернув свои альтернативы в группе. Также обратите внимание, что вам не нужно избегать , или . внутри класса символов, и вам не нужен класс символов вообще, если есть только символ, который вы хотите сопоставить.

/^\$?(?:[0-9 ][0-9, ]*(\.\d{1,2})?|\.([\d][\d]))[ ]*$/ 
Смежные вопросы