/ / Регулярно изразяване с хипеи и цифри - regex, language-agnostic

Редовно изразяване с хипсини и цифри - регенерация, език-агностик

Искам да създам регулярен израз по такъв начин, че в текстовото поле трябва да бъдат позволени само хипс и цифри

  1. Hypen не трябва да излиза на първа и последна позиция
  2. Hypen трябва да има цифри в двата края
  3. В текстовото поле може да има n брой хипс и цифри

Благодаря предварително

Отговори:

4 за отговор № 1

Ето скъсената версия на изречението @El Yobo. Можете да замените [0-9] с d и можете да направите опция с тире с -? за да премахнете специалния случай на безлиниеви низове.

^d+(-?d+)*$

http://ideone.com/SRqPW


3 за отговор № 2

Този регулярен израз трябва да го направи:

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

Това ще съответства на една или повече цифри, които могат да бъдат последвани от нула или повече последователности от тире, последвано от една или повече цифри.


2 за отговор № 3

Предполагам, че е валиден празен низ. Аз не съм сигурен, че разбирам вашата трета клауза, искаш да кажеш, че n може да бъде нещо, или трябва да ограничаваш нещата до n случаи? има ли някой номер едно или по-голямо или точно едно?

Следният regex позволява низ като 1-9-129-2-293-23, например.

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

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


2 за отговор № 4
^((d+-)+d+)*$

Той казва: трябва да започнете с няколко цифри, последвани от a -, Повторете толкова пъти, колкото искате, след това трябва да завършите с още няколко цифри. Че * в края е там, за да позволи празни струни.


2 за отговор № 5

Би ли работила това?

(d+-)*d+

Редактиране: Променено "+" до "*", тъй като тирета не изглеждат необходими.

Edit2: Фиксирана функция, за да се предотвратят двойни тирета.


1 за отговор № 6

Не мога да го повярвам, аз го имам като давам предположение в редовен израз, надявам се това да работи добре.

(d+(d*\-d+)+d*)|d+

-2 за отговор № 7

Можете да опитате да използвате тази регулярна формулировка: .[w-]*