Autor Zpráva
Prkny
Profil
Zdravím,

kontroluji javascriptem formulář. A potřebuji kontrolovat to, zda bylo zadáno číslo v adrese ulice.
Pokud nebylo zadáno číslo, vyhoď hlášku.
Bohužel se mi to nějak nedaří. Ten regulární výraz jsem našel zde: http://www.regularnivyrazy.info/regularni-vyraz-adresa.html

<SCRIPT LANGUAGE="JavaScript">
<!--
function Kontrola ()
{
    if (document.formular.ulice.value != ""){      
      if (/^(.*[^0-9]+) (([1-9][0-9]*)/)?([1-9][0-9]*[a-cA-C]?)$/.test(document.formular.ulice.value)){
         alert ("ok.");
         return true;       
      }
      else {
        alert ("chyba");
        return false;
      }
      }
}
// -->
</SCRIPT>

<form action="" method="post" name="formular" onSubmit="return Kontrola();">
Ulice: <input type="text" id="ulice" name="ulice" size="20"><br>
<input type="submit" value="Odeslat">
</form>
Jozin
Profil
Zdravím, první věc co vidím, že pokud formuláč nemá vyplněnou ulici, tak odesílání projde. Druhá věc nespoléhej na kontrolu javascriptem, určitě to testuj i potom ve zpracovávajícím skriptu js se dá snadno vypnout. No a teď ke kontrole samotné: regexp na odkazu funguje správně v javascriptu se moc nevyznám, ale řekl bych, že regexp by měl mít delimitery jiné než /, aby neoznačoval lomítko za první částí za konec, použil bych například ~ a další věc, neměl by být regexp v uvozovkách (to je jen má domněnka nejspíš to pravda není), Jozin.
Prkny
Profil
Děkuji.
Programuji spíše v php a tam už si to nějak ošetřím, ale toto potřebuji dostat do js.
Bohužel změna delimiteru a ani uvozovek tu kontrolu neaktivují. Jako by tam nebyla.

Nějaký jiný tip?
Prkny
Profil
A nebyl by nápad jak detekovat v řetězci, zda obsahuje číslo?
Jozin
Profil
A tak jsem si teda řekl, že ti to otestuju a zkusím sestavit:
var rp = RegExp('^(.*[^0-9]+) (([1-9][0-9]*)/)?([1-9][0-9]*[a-cA-C]?)$');
document.body.innerHTML = rp.test(document.formular.ulice.value);
Toto funguje, mělo by to fungovat i bez RegExp, ale já osobně kdybych to četl, tak bych si nebyl jistý, jestli je to regexp, takže používám pojmenování. Tento script ti do body vypíše true nebo false, dobré na testování, pak si to oprav, Jozin.
_es
Profil
Prkny:
Ak je vo formulári uvedené „ulica“, tak by sa tam asi mala zadávať ulica a nie ulica a aj niečo ďalšie ako číslo domu. Niektoré obce ani nemajú oficiálne názvy ulíc - majú len čísla domov.
jenikkozak
Profil
Prkny:
potřebuji kontrolovat to, zda bylo zadáno číslo v adrese ulice
Tato kontrola není dostatečně univerzální a spolehlivá ze dvou důvodů:
- Číslovka může být obsažena v názvu ulice (ulice jmenující se podle dní v roce),
- Novostavba nemusí mít uvedeno číslo popisné. Pak sice neslouží jako trvalé bydliště, ale může se použít jako doručovací adresa (na poště se dá doručování do takového objektu domluvit, u přepravních společností se taková informace dá dopsat k neúplné adrese).
Záleží na účelu sběru dat. Pravděpodobně ti bude stačit, když budeš pouze kontrolovat vyplnění toho políčka pro případ, že by ho uživatel nedopatřením přeskočil.
_es
Profil
jenikkozak [#7]:
Ešte je možný aj prípad, že adresa je neúplná - bez ulice a čísla domu, no pošta zásielku bez problémov doručí, ak ide napríklad o všeobecne známu budovu v obci.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: