#regex
#регулярное выражение
Вопрос:
Мне нужно регулярное выражение, соответствующее следующему:
1.234.567
-1.234.789
1234567
-1234567
Оно не должно совпадать:
.123 (leading separator)
123..456 (two separators)
Другими словами, мне нужно регулярное выражение для сопоставления long
числовых значений, отформатированных с разделителями в тысячу или без них.
Спасибо!
Комментарии:
1. Разделитель в тысячу всегда является точкой. ?
2. звучит немного как домашнее задание
3. Нет, это не домашнее задание. Я пытаюсь игнорировать недопустимые пользовательские вводимые данные из текстового поля в WPF.
Ответ №1:
Вот более ограниченный ответ
^-?(?!0)(?:d |d{1,3}(?:.d{3}) )$
Смотрите онлайн здесь, в Regexr
(?!0)
предотвращает начало с 0
d
позволяет использовать числа без разделителя
d{1,3}(?:.d{3})
это часть для разделителя. Начните с 1-3 чисел, затем разделитель и 3 числа. Точка для разделителя, за которой следуют 3 числа, может повторяться.
Комментарии:
1. Спасибо! 1 за предоставление более подробного описания.
Ответ №2:
Комментарии:
1. Спасибо! И 1 для ссылки на демонстрацию с примерами.
2. @Olav @bazmegakapa вы знаете, что это также соответствует
0.0.0
и1.23.45
и1.
?3. @stema Я. Для проверки на стороне клиента этого достаточно. Ваше, конечно, лучше, но для меня немного излишне.
4. Пошел с ответом @ stema, поскольку он охватывает больше того, что я искал.