2010-08-10 2 views
2

мне нужно регулярное выражение, которое принимает только цифры и точки, с этими условиями:Регулярное выражение с повторением?

  1. между цифрами три должны быть только одна точка «132.632.55»
  2. цифры можно повторить между двумя точками. 112234563456789.»
  3. строка начинается с цифр
  4. цифры с "." как это '123346547987.' можно повторить много раз
  5. длина этих цифр меньше, чем 50 символов

Например: 123456.258469.5467.15546

+2

Digits = Числа, вы используете их как взаимозаменяемые. Просьба уточнить. – quantumSoup

+1

* длина этих цифр меньше 50 символов * - вы имеете в виду длину одного пробега цифр (простое) или длину всей строки (лучше всего сделать за пределами регулярного выражения?) – finnw

ответ

5

Учитывая всю информацию в этом вопросе, я думаю, что это регулярное выражение вам нужно:

^(\d{1,50}\.)*\d{1,50}$ 

Это будет:

  • требуют, чтобы строка начинается и заканчивается цифрой
  • не требуют, чтобы там была точка
  • обеспечить, чтобы каждый пробег цифр между не точки больше не чем 50 цифр

Если вам это нужно иметь по крайней мере одну точку, изменить * к +:

^(\d{1,50}\.)+\d{1,50}$ 
+0

отличное вы регулярное выражение 'HERO'. – Rev

1

Из того, что я могу сказать от ваших потребностей, вы хотите что-то вроде этого:

^(\d{1,50}\.)*\d{1,50}$ 

То есть от одной до пятидесяти цифр, необязательно предшествующих любому количеству групп от одной до пятидесяти цифр, каждая из которых следует за полным стопом. Я не могу сказать, хотите ли вы что-то вроде 1233.456 быть недопустимым, так как ваше требование № 2 подразумевает, что только цифры между точками могут содержать повторяющиеся цифры. В таком случае было бы намного проще выполнить проверку отдельных групп цифр после факта.

+0

Исправлено и уточнено. @ Тимви ответил тождественно, пока я еще редактировал. –

+0

Итак, у вас есть 1 голос от меня, и вы отправляете правильный ответ! – Rev

Смежные вопросы