Кто-нибудь может предоставить мне регулярное выражение для следующих шаблонов?
$ 1234
$ 31234,3
$ 1234,56
$ 123456,78
$ 0,99
Мое требование состоит в том, что цифры до десятичной точки не должны превышать 6, а после десятичной точки она не должна превышать 2 цифры. Пожалуйста, помогите мне. Заранее спасибо..
4 ответа
^\$(?=.*\d)\d{0,6}(\.\d{1,2})?$
(?=.*\d)
удостоверяется, что в строке есть хотя бы одна цифра. Без этого регулярное выражение ^\$\d{0,6}(\.\d{1,2})?$
будет соответствовать строке $
.
Кстати, оглядка вперед не должна быть такой длинной; подойдет даже простой (?=.)
, поскольку регулярное выражение проверяет, что последующие символы действительно допустимы. Таким образом, это может быть упрощено до
^\$(?=.)\d{0,6}(\.\d{1,2})?$
^\$[0-9]{0,6}(\.[0-9]{1,2})?$
Шаблон будет таким:
^\$\d{0,6}(\.\d{0,2})?$
Это не подтверждает, что есть какие-либо цифры, так что "$." является действительным совпадением и действительным результатом с учетом исходных требований спрашивающего.
Объяснить:
^
означает совпадение только в том случае, если перед искомой строкой ничего нет, т. Е. «USD $ 123,45» в этом примере потерпит неудачу, так как $ (соответствует \$
) не сразу после начало строки.
\$
соответствует символу $, использование обратной косой черты () называется экранированием и используется для того, чтобы позволить вам сопоставить зарезервированные символы (что означает что-то в контексте регулярного выражения) в этом случае $, что означает совпадение с конец строки, т.е. после этой точки нет символов
\d
будет соответствовать любому десятичному символу, то есть 0-9
{n,m}
будет соответствовать от n до m экземпляров предыдущего элемента, если n равно 0, это фактически означает, что совпадение не является обязательным.
\.
будет соответствовать десятичной точке, она экранирована как. является зарезервированным символом в регулярном выражении, означающем совпадение с любым символом
(...)
объединяет регулярное выражение, содержащееся внутри, в группу, есть и другие последствия, но я оставлю это вам для изучения. В этом случае он используется только для следующего символа в регулярном выражении.
?
будет соответствовать 0 или 1 предыдущего элемента (в этом случае группа, которая ищет десятичную точку и до 2 десятичных знаков, поэтому мы ожидаем, что не будет десятичной точки с завершающими символами (0 вхождений) или десятичная точка, содержащая до 2 десятичных знаков (1 вхождение))
$
соответствует концу строки, после этой точки в строке не может быть символов.
/^\$([0-9]{0-6})|^\$([0-9]{0-6})+\.([0-9]{0-2})$|\$\.([0-9]{0-2})$/
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.