Регулярное выражение для соответствия суммам в долларах

Кто-либо мог предоставить мне регулярное выражение для следующих шаблонов?

1 234$

31 234,3$

1 234,56$

123 456,78$

.99$

Мое требование является цифрами, прежде чем десятичное число не должно будет превышать 6 и после десятичной точки, это не должно превышать 2 цифры.Пожалуйста, помогите мне.Заранее спасибо..

6
задан Brad Mace 21 July 2011 в 05:04
поделиться

4 ответа

^\$(?=.*\d)\d{0,6}(\.\d{1,2})?$

(?=.*\d) гарантирует, что в строке есть хотя бы одна цифра. Без этого, regex ^\$\d{0,6}(\.\d{1,2})?$ будет соответствовать строке $.

Кстати, заголовок не обязательно должен быть таким длинным; подойдет даже простой (?=.), так как регекс проверяет, что последующие символы действительно допустимы. Таким образом, его можно упростить до

^\$(?=.)\d{0,6}(\.\d{1,2})?$
9
ответ дан 8 December 2019 в 14:39
поделиться
^\$[0-9]{0,6}(\.[0-9]{1,2})?$
4
ответ дан 8 December 2019 в 14:39
поделиться

Шаблон будет выглядеть следующим образом:

^\$\d{0,6}(\.\d{0,2})?$

Это не подтверждает, что есть какие-либо цифры, такие как «$». является действительным совпадением и действительным результатом с учетом исходных требований автора.

Для объяснения:

^ означает совпадение только в том случае, если перед искомой строкой ничего нет, то есть «123,45 доллара США» в этом примере не сработает, поскольку $ (соответствует \ $ ) находится не сразу после начала строки.

\ $ соответствует символу $, использование обратной косой черты () называется экранированием и используется, чтобы позволить вам сопоставлять зарезервированные символы (которые означают что-то в контексте регулярного выражения) в этом случае $ which означает соответствие концу строки, т.е. после этой точки нет символов

\ d будет соответствовать любому десятичному символу, т.е. 0-9

{n, m} будет соответствовать от n до m экземпляров предыдущего элемента, если n равно 0, то это фактически означает, что совпадение не является обязательным.

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

(...) объединяет содержащееся внутри регулярное выражение как группу, есть и другие последствия, но я оставлю это вам для изучения.В этом случае он используется исключительно в пользу следующего символа в регулярном выражении

? будет соответствовать 0 или 1 предыдущего элемента (в данном случае группа, которая ищет десятичную точку и до 2 десятичных знаков). символов, поэтому мы ожидаем, что не будет десятичной точки с завершающими символами (0 вхождений) или десятичной точки с двумя десятичными знаками (1 вхождение))

$ соответствует концу строки, может быть после этой точки в строке нет символов.

2
ответ дан 8 December 2019 в 14:39
поделиться
/^\$([0-9]{0-6})|^\$([0-9]{0-6})+\.([0-9]{0-2})$|\$\.([0-9]{0-2})$/
1
ответ дан 8 December 2019 в 14:39
поделиться
Другие вопросы по тегам:

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