Miért nem működik ez a regexp match javascriptben?
Az input mező:
<input type="email" name="" id="email1" pattern="/^[0-9a-z\.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$/i">
Az ellenőrzés a függvényben:
} else if (!((input_email_dom_1.value).match(email_pattern)) ) {
Mindent megtalál jól, csak a megfeleltetés nem megy, pl a@e.h esetén.
A megoldás:
vagy
const email_pattern = /^[0-9a-z\.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$/i;
} else if (!(input_email_dom_1.value).match(email_pattern) ) {
vagy
} else if (!/^[0-9a-z\.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$/.test(input_email_dom_1.value) ) {
vagy
<form action="/action_page.php">
<label for="email">Email:</label>
<input type="email" id="email" name="email"
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$">
<input type="submit">
</form>
ez esetben ez mind jó:
//const email_pattern = /^[0-9a-z\.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$/i;
//const email_pattern = input_email_dom_1.getAttribute("pattern");
//const email_pattern = new RegExp(input_email_dom_1.getAttribute("pattern"));
//const email_pattern = new RegExp(input_email_dom_1.getAttribute("pattern"), 'g');
és akkor:
} else if (!(input_email_dom_1.value).match(email_pattern) ) {
A probléma az, hogy a pattern attribútum nem igényel határoló jeleket (/), mint a JavaScript RegExp objektum. Ha eltávolítja a határoló jeleket, akkor a regexp match működni fog. Például:
<input type="email" name="" id="email1" pattern="^[0-9a-z.-]+@([0-9a-z-]+.)+[a-z]{2,4}$">
Ezt a weboldalt1 használtam referenciaként a match () metódus működésének megértéséhez.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!