/ / PHP - Regex: Имам нужда от помощ за изграждане на regex според тези правила - php, regex

PHP - Regex: Имам нужда от помощ за изграждане на регенерация според тези правила - php, regex

Имам нужда от помощ за изграждането на регулярен израз за preg_match съгласно тези правила:

  1. само първата и последната буква / цифра.
  2. празното пространство не е позволено
  3. char може да бъде само - буква / цифра / "-" / "_" / "."

Правни примери:

  1. b.t612_rt
  2. коловоз-бъда
  3. rut7565

Не е правен пример:

  1. .btr78; btr78- (първите / последните разрешени символи)
  2. начало; звезден край; (всяко празно пространство)
  3. TR $ бъде; TR * стайна температура; tr / tr ... (не са позволени символи)

Edit: Премахвам 4 правила с neigbor chars "_" "-" "."

Моля, помогни ми.

Благодаря

Отговори:

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

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

^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*$

Това съвпада с всяка последователност, която започва с поне една буква или цифра (^[A-Za-z0-9]+), които могат да бъдат последвани от нула или повече последователности на един от -, _, или . ([-_.]), които трябва да бъдат последвани от поне една буква или цифра ([A-Za-z0-9]+).


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

Опитайте тази:

^[p{L}p{N}][p{L}p{N}_.-]*[p{L}p{N}]$

В PHP:

if (preg_match(
"%^               # start of string
[p{L}p{N}]      # letter or digit
[p{L}p{N}_.-]*  # any number of letters/digits/-_.
[p{L}p{N}]      # letter or digit
$                 # end of the string.
%xu",
$subject)) {
# Successful match
} else {
# Match attempt failed
}

Минимална дължина на низ: Два знака.


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

Това изглежда работи добре за предоставените примери: $patt = "/^[a-zA-Z0-9]+([-._][a-zA-Z0-9]+)*$/";


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

Е, за всяко ваше правило:

  1. Първа и последна буква / цифра:

    ^[a-z0-9]
    

    и

    [a-z0-9]$
    
  2. празното пространство не е позволено (нищо не е необходимо, тъй като правим положително съвпадение и не разрешаваме никъде на празно място):

  3. Само букви / цифри / - / _ /.

    [a-z0-9_.-]*
    
  4. Няма съседни символи:

    (?!.*[_.-][_.-])
    

Така че, всички заедно:

/^[a-z0-9](?!.*[_.-][_.-])[a-z0-9_.-]*[a-z0-9]$/i

Но с всички regexes, има няколко решения, така че опитайте ...

Редактирайте: за вашата редакция:

/^[a-z0-9][a-z0-9_.-]*[a-z0-9]$/i

Просто премахнете секцията за правилото, което искате да промените / отдалечено. толкова е лесно ...