Опитвам се да създам регулярен израз за валидиране на формуляр, но той винаги връща true. Потребителят трябва да може да добави нещо като {user|2|S}
като вход, но също така да използва скоби, ако те са екранирани с \
.
Този код проверява за лявата скоба {
засега.
$regex = '/({(?=([a-zA-Z0-9]+\|[0-9]*\|(S|D[0-9]*)}))|[^{]|(?<=\\\){)*/';
if (preg_match($regex, $value)) {
return TRUE;
} else {
return FALSE;
}
Възможен правилен вход би бил:
Hello {user|1|S}, you have {amount|2|D2}
or
Hello {user|1|S}, you have {amount|2|D2} in \{the_bracket_bank\}
Това обаче трябва да върне false:
Hello {user|1|S}, you have {amount|2}
и това също:
Hello {user|1|S}, you have {amount|2|D2} in {the_bracket_bank}
Пример на живо може да се намери тук: http://regexr.com?37tpu Имайте предвид, че има \
в lookbehind в края, PHP ми даваше съобщения за грешка, защото трябваше да го избягам допълнително в моя код.
Hello {user|1|S}, you have {amount|2|D2} in {the_bracket_bank}
? - person revo   schedule 08.01.2014