Проверка на низ за валидни знаци
Приятели, може би вече го получих с въпроси :)
но - как можете да проверите низ за валидни знаци, т.е. знаците A-Z, a-z и долна черта са разрешени, останалите са забранени.
Отговорено: 25
Е, не знаете регулярни изрази, това е добре.
Има две опции: 1. разбирам (за щастие има милиони примери в мрежата) 2. направете го по правилния начин - итерирайте всички знаци от низа и проверете всеки един за валидност
знаците за началото и края на реда трябва да бъдат зададени, в противен случай редове като abc12345 ще преминат
Но не е вярно ;) /^[a-zA-Z_]+$/ , така или иначе. като.
по-лесно е да замените отрицанието в if
Някои от нас ядоха нещо. О_о
За изходния код:
- $string = "foobar" - условието ще бъде изпълнено (и правилно)
- $string = "foo#bar" - условието ще бъде изпълнено (и грешно)
- $string = "#!@" - условието ще се провали (и правилно)
И разбрах, че вътре в if'a има нещо, което трябва да работи, ако пасне, "премина теста" (тогава ще го хвърли на ръководството и ще излезе). Ако е обратното, да, това е отказ. Но все пак ще бъде неправилно да се провери, без ^ и $ няма да стане там, регулярният израз на самата крива.
Е, robyaty, много си направил, в PCRE има такова хубаво нещо като \w - всеки знак "дума", който включва само всяка буква или цифра или знака за подчертаване. И, готово, целият израз е сведен до абсурд: /^\w+$/ И (!) локалните знаци се поддържат, за разлика отпросто изброяване, аз обаче не правя скриптове за нашия роден език, но ръководството посочва възможността.
Ръководството за PHP казва следното: Знакът „дума“ е произволна цифра, буква или долна черта, с други думи всеки знак, който може да бъде част от „дума“ в Perl. Дефиницията на букви и цифри се контролира от символните таблици, с които е изграден PCRE. И в резултат на това тези комплекти могат да се различават в различни локализирани дистрибуции. Например в локала "fr" (Франция) някои знаци над 128 се използват за писане на ударени знаци и съответно съответстват на маската \w. Разбира се, не пропуснах да проверя какво ще произведе следният скрипт: И, разбира се, това е "FAILED!". Тези. или принудете всичко чрез setlocale или направете /^[A-Za-z_]+$/ без да натискате мозъка (можете /^[A-Z_]$/i , да. )
По-логично е от гледна точка на setlocal, по-удобно е при груба сила.
Кое е по-логично? Би било по-логично, ако беше написано "дума на английски". След това локалът, да. И имаме даден набор от букви (символи). Тогава, следователно, [a-z_] . Да, и издърпайте локала, същите тези функции за дата могат да бъдат победени, вече трябва да гледате, така че да не се случи нищо, което не се очаква.
Въпреки че това вече е по-скоро въпрос за holivars, отколкото истински проблем. ;)
А .. Е, те самите казаха - местни символи. И условието гласи в цвят на шрифта на фона - знацитеA-Z, a-z и долна черта са разрешени, останалитеса забранени.
Ами ако не посочите локала?
Чисто логично предполагам, че можете и просто да зададете английски ^___^
Глупаво е да сменяш локала заради една проверка. Тя не е създадена за това.
както разбирам, ако разрешите и числа, ще бъде: