Искам да създам регулярен израз по такъв начин, че в текстовото поле трябва да бъдат позволени само хипс и цифри
- Hypen не трябва да излиза на първа и последна позиция
- Hypen трябва да има цифри в двата края
- В текстовото поле може да има n брой хипс и цифри
Благодаря предварително
Отговори:
4 за отговор № 1Ето скъсената версия на изречението @El Yobo. Можете да замените [0-9]
с d
и можете да направите опция с тире с -?
за да премахнете специалния случай на безлиниеви низове.
^d+(-?d+)*$
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-]*