Függőleges vonallal elválasztott szavakat felismerő reguláris kifejezés
Kérek minden reguláris kifejezés gurut, hogy vizsgálja meg a következő kódot, és magyarázza el nekem, hogy miért ad vissza false-t.
Szerény véleményem szerint ennek true-t kellen visszaadnia.
A reWork oldalon is teszteltem, és a JavaScript motorja true-t adott vissza.
■ Szerény véleményem szerint ennek true-t kellen visszaadnia.
A reWork oldalon is teszteltem, és a JavaScript motorja true-t adott vissza.
<?php
$expr = 'FreeBSD';
if (preg_match('/^([^\\\r\n\|]+\|{0,1}[^\\\r\n\|]{0,})*$/i',$expr)){
die("MATCH");
}
?>
mi volt a cél?
ez most szerintem a következőt csinálja: néhány nem-enter-nem-|-nem-\ karakter, majd esetleg egy |, majd néhány nem-enter-nem-|-nem-\ karakter vagy egy sem, illetve ilyenek sorozata.
ez néhány (legalább egy) szó, ha több van, akkor |-val elválasztva? ennek kicsit bonyolult a kifejezés, de én csak ezt tudom beleérteni...
megj: a {0,1} röviden ?, a {0,} röviden *
megj2: a rejtvény megoldását nem tudom:)
A cél
1. nem tartalmaz:
\n
\r
\
karaktereket
2. az első követelménynek megfelelő sztring szerepelhet egyedül is, vagy | karakterrel elválasztva több is.
Tehát ezek a karakterláncok helyesek:
autó|kocsi|jancsi
vagy
bela
vagy
aaa222|sksks
vagy
a
Viszont ez már nem helyes:
auto||auto
Esetleg ezekkel a szabályokkal valaki megpróbálhatna összedobni egy PHP-ben is működő reg. kifejezést (PCRE). Köszi.
The Regex Coach
Ez se rossz
The Regulator
egy megoldás
(hátránya lehet, hogy elfogadja ezt: "asdf|asdf|")
PHP alatt nem megy
nyilván nem
működik, de most már az enyém is
idézet
Kösz mindenkinek a segitséget, mindig tanul valamit az ember.
Én erre gondolok
egy rugóra jár az agyunk
hogy mik vannak...
Bonyolult