

Regularni vyraz
Ahoj,
trošku nechápu ukončení jednoho výrazu (který funguje dle mých potřeb)
$regex = "^\D{3,}\w{2}\d{2,}(?!\w)"
Hledám string, který začíná alespoň 3 alfa znaky (ne digit), poté 2 alfanumerickými (a-Z 0-9), poté s minimálně 2 digit a takové, aby končily digit znakem
Ukončení (?!\w) trošku nechápu jak může fungovat, chápu to jako ".. not followed by alphanumeric).. což bych tam teda očekával spíše (?!\D) než \w .. ale s D (jako nondigit) to nefakčí ..
testovací string:
novak10 - valid
novak102 - valid
nov1k10 - valid
administrator - not valid
n1vak10 - not valid
novak10a - not valid
Nebo to ukončení regexu je uplne blbe a ciste nahodou to funguje tak jak ja potrebuji, ackoliv je to napsane blbě?
A nestačilo by prostě:
Nebo je povoleno i např.:
novak10aaa1 ?
když to zkrátím tak to matchuje novak102o což povoleno není... nechci aby string (AD účet) mohl končit nedigitalním znakem
novak102 je valid, 102o už ne.. ono ani novak10000 taky ne (proste na konci pouze 2 nebo 3 číslice)
No v tom případě:
jo takze na konci mas 2 nebo 3 digit a nasledne ukonceni stringu.. chapu to tak ?
To jsi přece chtěl, ne?
jj .. vlastně jo .. nevím proč sem se tam snažil vecpat něco pro "not followed" .. proste 2-3 digit a ukončit ..
Dík
.. a i tak, dokázal bys vysvětlit proč s (?!\w) to také fungovalo?
A proč by nemělo?
no podle jisté stránky
\w = Matches any word character including underscore. Equivalent to '[A-Za-z0-9_]'.
Takže trošku nepobírám, jak to že to matchuje novak102 a nikoliv novak10a
a co ta negace u \w?
"^\D{3}\w{2}\d{2,3}$" (jinak to hledalo i nesmysly jako svc_testing99)
jinak psal jsem to podle
http://www.codeproject.com/Articles/9099/The-30-Mi nute-Regex-Tutorial