Cum se validează o intrare numai cu litere și spații albe prin intermediul expresiei regulate JavaScript (Programare, Javascript, Html, Regex, Validare)

Zoran777 a intrebat.

Am un input type="text" pentru nume în codul meu HTML. Trebuie să mă asigur că este un șir de caractere cu litere de la „a” la „z” și numai de la „A” la „Z”, împreună cu spațiu(uri).

Acesta este codul meu HTML:

<form action="" name="f" onsubmit="return f1()">
                Name : <input type="text" name="name">

Mă aștept ca JavaScript-ul meu să fie ceva de genul acesta:

function f1() 
{  
   var x=document.f.name.value;  
   ..... 
   ..... 
   return false;
}

PS: Nu sunt foarte familiarizat cu expresiile regulate, așa că vă rog să puneți o explicație împreună cu codul.

Comentarii

  • regex Oricum, dacă aveți de gând să stocați asta într-o bază de date, asigurați-vă că faceți și o validare pe server –  > Por DarkBee.
6 răspunsuri
Konsole

Puteți utiliza javascript test() pentru a valida câmpul nume. Adresa test() testează dacă există o potrivire într-un șir de caractere.

/^[A-Za-zs]+$/.test(x) //returns true if matched, vaidates for a-z and A-Z and white space

sau

/^[A-Za-z ]+$/.test(x)

Frederik.L

Dacă construiți ceva pentru browsere moderne, există ceva foarte plăcut în HTML5:

<input id="username" name="name" type="text" pattern="[a-zA-Z]{5,}" title="Minimum 5 letters" required />

Referință:Tipuri de intrare în formulare HTML5

Actualizare 2017/01/17:

Browserele vechi sunt destul de slabe pe cotele de piață în zilele noastre. Aceasta este o bună practică pentru a utiliza caracteristicile HTML5 în locul scripturilor de compatibilitate.

Comentarii

  • acest lucru funcționează doar într-un formular cu un buton standard de trimitere? Am rulat acest lucru într-un câmp de intrare independent cu un ascultător javascript pentru submit și nu a făcut prea multe. –  > Por Arthur Tarasov.
  • @ArthurTarasov Trebuie să îi spui formularului că butonul tău îl trimite: ¨formElement.submit()`. Altfel, formularul nu are cum să știe că interacțiunile tale sunt menite să fie validate. –  > Por Frederik.L.
twinlakes

verificați expresiile regulate și modelele.

function f1() 
{  
   var x=document.f.name.value;  
   return /^[A-z ]+$/.test(x);
}

Johansrk

Iată o regx mai lungă. Caută a-z în toate limbile latine etc… puteți scrie și cratimă – subliniere _ punct . precum și spațiu

var reg =  /^[a-zA-Z._-s{1}u00C6u00D0u018Eu018Fu0190u0194u0132u014Au0152u1E9Eu00DEu01F7u021Cu00E6u00F0u01DDu0259u025Bu0263u0133u014Bu0153u0138u017Fu00DFu00FEu01BFu021Du0104u0181u00C7u0110u018Au0118u0126u012Eu0198u0141u00D8u01A0u015Eu0218u0162u021Au0166u0172u01AFYu0328u01B3u0105u0253u00E7u0111u0257u0119u0127u012Fu0199u0142u00F8u01A1u015Fu0219u0163u021Bu0167u0173u01B0yu0328u01B4u00C1u00C0u00C2u00C4u01CDu0102u0100u00C3u00C5u01FAu0104u00C6u01FCu01E2u0181u0106u010Au0108u010Cu00C7u010Eu1E0Cu0110u018Au00D0u00C9u00C8u0116u00CAu00CBu011Au0114u0112u0118u1EB8u018Eu018Fu0190u0120u011Cu01E6u011Eu0122u0194u00E1u00E0u00E2u00E4u01CEu0103u0101u00E3u00E5u01FBu0105u00E6u01FDu01E3u0253u0107u010Bu0109u010Du00E7u010Fu1E0Du0111u0257u00F0u00E9u00E8u0117u00EAu00EBu011Bu0115u0113u0119u1EB9u01DDu0259u025Bu0121u011Du01E7u011Fu0123u0263u0124u1E24u0126Iu00CDu00CCu0130u00CEu00CFu01CFu012Cu012Au0128u012Eu1ECAu0132u0134u0136u0198u0139u013Bu0141u013Du013Fu02BCNu0143Nu0308u0147u00D1u0145u014Au00D3u00D2u00D4u00D6u01D1u014Eu014Cu00D5u0150u1ECCu00D8u01FEu01A0u0152u0125u1E25u0127u0131u00EDu00ECiu00EEu00EFu01D0u012Du012Bu0129u012Fu1ECBu0133u0135u0137u0199u0138u013Au013Cu0142u013Eu0140u0149u0144nu0308u0148u00F1u0146u014Bu00F3u00F2u00F4u00F6u01D2u014Fu014Du00F5u0151u1ECDu00F8u01FFu01A1u0153u0154u0158u0156u015Au015Cu0160u015Eu0218u1E62u1E9Eu0164u0162u1E6Cu0166u00DEu00DAu00D9u00DBu00DCu01D3u016Cu016Au0168u0170u016Eu0172u1EE4u01AFu1E82u1E80u0174u1E84u01F7u00DDu1EF2u0176u0178u0232u1EF8u01B3u0179u017Bu017Du1E92u0155u0159u0157u017Fu015Bu015Du0161u015Fu0219u1E63u00DFu0165u0163u1E6Du0167u00FEu00FAu00F9u00FBu00FCu01D4u016Du016Bu0169u0171u016Fu0173u1EE5u01B0u1E83u1E81u0175u1E85u01BFu00FDu1EF3u0177u00FFu0233u1EF9u01B4u017Au017Cu017Eu1E93]+$/;
                    return reg.test(val);

quinnirill

/^[A-Z ]+$/i.test(x) face treaba conform specificației tale, dar dacă aș fi în locul tău, aș adăuga liniuțe, adică /^[-A-Z ]+$/i.test(x), , deoarece nume cu două bariere sunt destul de frecvente. Desigur, aș sugera să reveniți mai târziu asupra acestui lucru odată ce JS va primi suport pentru detectarea cuvintelor unicode în RegExp pentru a suporta și mai multe nume.

EDIT: De fapt, dacă vreți să vă asigurați că numele nu este format greșit, de exemplu, există cel puțin numele și prenumele și nu există spații în plus, ați putea face ceva de genul acesta: /^(?:[-A-Z]+ )+[-A-Z]+$/i.test(x). De asemenea, tocmai mi-am amintit că poate doriți să includeți și puncte, de exemplu „Henry Jr. Jones”. Combinat cu cel precedent, acesta ar fi: /^(?:[-A-Z]+.? )+[-A-Z]+$/i.test(x).

Cod
 <!--For Character in Textbox Script -->
    <script type="text/javascript">
        function isAlfa(evt) {
            evt = (evt) ? evt : window.event;
            var charCode = (evt.which) ? evt.which : evt.keyCode;
            if (charCode > 32 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
                return false;
            }
            return true;
        }

        function toTitleCase(str) {
            return str.replace(/wS*/g, function (txt) {
                return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
            });
        }


    </script>
    <!--For Character in Textbox Script -->