/ / regex.test () funkcia neposkytuje správny výsledok - javascript, html, regex

Funkcia regex.test () nedáva správny výsledok - javascript, html, regex

Myslím, že svoje pochybnosti môžem vysvetliť tak, že ukážem kód namiesto toho, aby som ho exlpaining ::

HTML:

<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Building Web Page for Client</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css.css">
</head>
<body>
<form>
<label for="message">Enter the banner Message: </label>
<input type="text" name="userMessage" id="message" maxlength="32"><span></span><!--Form validation help text field--><br />
<label for="zipcode">Enter the Zip Code: </label>
<input type="text" name="userZip" id="zipcode" maxlength="5"><span></span><!--Form validation help text field--><br />
</form>
<script type="text/javascript" src="javascript.js"></script>
<div id="testElement"></div>
</body>
</html>

Javascript ::

//Code block for element declarers for special function checkers
var inputList = document.getElementsByTagName("input");
var zipField = document.getElementById("zipcode");
var regexForZip = /^d{5}$/;
zipField.onblur = zipChecker;

function zipChecker(){
if(checker1 && checker2){
if(!(regexForZip.test(zipField)))
inputList[1].nextElementSibling.textContent = "You can only enter numbers";
else
inputList[1].nextElementSibling.textContent = "";
}
}

HTML je teraz dosť jednoduchý a javascript ešte jednoduchší. Teraz sa môžete pozrieť na checker1 a checker2 booleans? Obe sú pravdivé (je nám ľúto, že som ich do tohto kódu nezahrnul, kód je trochu veľký).

Definoval som regulárny výraz, ktorý bude IBAobsahovať 5 číslic, nič iné. Teraz sa pokúsim zobrať druhý vstupný prvok a bez ohľadu na to, čo používateľ zadá, skontrolujem, či má iba 5 číslic. Podľa kódu, ak vstup nezodpovedá regulárnemu výrazu, ďalší <span> značka bude mať text vyzývajúci používateľa, inak bude prázdna.

POZNÁMKA: V takom prípade bude mať vstup 5 znakov.

Teraz je tu problém:Bez ohľadu na to, čo zadám ako vstup, stránka ma vyzve, aby som zadal iba čísla, čo nemá zmysel. Predpokladajme, že zadám 11111. Hovorí mi, čo mi malo povedať, ak som zadal iný znak ako číslo.

Aký je v tom problém?

odpovede:

3 pre odpoveď č. 1

Používate svoje RegExp proti DOM Element

if (!regexForZip.test(zipField))

Možno budete chcieť otestovať hodnota prvku, ktorým je a string:

if (!regexForZip.test(zipField.value))