Регулярное выражение с использованием гипсов и цифр - PullRequest
4 голосов
/ 04 декабря 2010

Я хочу создать регулярное выражение таким образом, чтобы в текстовом поле допускались только знаки и цифры, критерии:

  1. Hypen не должен входить в первую и последнюю позицию
  2. Hypen должен иметь цифры на обоих концах
  3. В текстовом поле может быть n номеров знаков и цифр

Заранее спасибо

Ответы [ 7 ]

4 голосов
/ 04 декабря 2010

Вот сокращенная версия регулярного выражения @El Yobo. Вы можете заменить [0-9] на \d и сделать дефис необязательным на -?, чтобы удалить специальный случай строк без дефисов.

^\d+(-?\d+)*$

http://ideone.com/SRqPW

3 голосов
/ 04 декабря 2010

Это регулярное выражение должно делать это:

^[0-9]+(-[0-9]+)*$

Это будет соответствовать одной или нескольким цифрам, за которыми может следовать ноль или более последовательностей дефиса, за которыми следуют одна или несколько цифр.

2 голосов
/ 04 декабря 2010
^((\d+-)+\d+)*$

Он говорит: вы должны начать с нескольких цифр, после которых следует -Повторите столько раз, сколько хотите, затем вы должны закончить еще несколько цифр.То, что * в конце, позволяет пустые строки.

2 голосов
/ 04 декабря 2010

Будет ли это работать?

(\d+\-)*\d+

Редактировать: «+» изменен на «*», поскольку дефисы не нужны.

Edit2: исправлено регулярное выражение для предотвращения двойных дефисов.

2 голосов
/ 04 декабря 2010

Я предполагаю, что пустая строка допустима. Я не уверен, что понимаю ваш третий пункт; Вы имеете в виду, что n может быть чем угодно, или вам нужно ограничить количество событий n? Я также не уверен, сколько цифр должно быть на каждом конце дефиса; это номер один или больше, или точно один?

Следующее регулярное выражение допускает строку, например 1-9-129-2-293-23.

^(([0-9]+-[0-9]+)|[0-9]+)*$

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

1 голос
/ 04 декабря 2010

Я не могу поверить в это, я получил это, давая предположение в регулярном выражении, я надеюсь, что это будет работать хорошо

(\d+(\d*\\-\d+)+\d*)|\d+
0 голосов
/ 04 декабря 2010

Вы можете попробовать использовать это регулярное выражение: .[\w-]*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...