2010-12-14 26 views
206

Ich habe eine Seite mit einem Textfeld, in dem ein Benutzer einen 24-stelligen (Buchstaben und Zahlen, Groß- und Kleinschreibung) Registrierungscode eingeben soll. Ich habe maxlength verwendet, um den Benutzer auf die Eingabe von 24 Zeichen zu beschränken.Wie erkennt man, ob eine Zeichenfolge ein bestimmtes Zeichen in JavaScript enthält?

Die Registrierungscodes werden normalerweise als Gruppen von Zeichen getrennt durch Bindestriche angegeben, aber ich möchte, dass der Benutzer die Codes ohne Bindestriche eingibt.

Wie kann ich meinen JavaScript-Code ohne jQuery schreiben, um zu überprüfen, ob eine gegebene Zeichenfolge, die der Benutzer eingibt, keine Bindestriche enthält oder noch besser nur alphanumerische Zeichen enthält?

+1

Die Antwort hier http://stackoverflow.com/questions/3192612 hat die Informationen darüber, wie die alphanumerischen zu validieren. – JasCav

+1

Und um reguläre Ausdrücke zu lernen: http://www.regular-expressions.info –

+0

Für Sie jquery Leute sollten und könnten Sie 'inArray' verwenden. – JonH

Antwort

418

Um "Hallo" in your_string

if (your_string.indexOf('hello') > -1) 
{ 
    alert("hello found inside your_string"); 
} 

Für die alphanumerischen finden Sie einen regulären Ausdruck verwenden:

http://www.regular-expressions.info/javascript.html

Alpha Numeric Regular Expression

+0

Das war sehr hilfreich. Als Python-Programmierer benutze ich das, um das "in" -Schlüsselwort zu ersetzen (was vielleicht unorthodox ist, ich bin nicht sicher), aber es funktioniert für mehr als nur ein einzelnes Zeichen. –

+0

Ich verstehe nicht, wie das bei der Antwort abgestimmt wurde. Ich kann sehen, dass viele Leute mit dem Googlen hierher kommen. Ein besserer Weg wäre definitiv ein regulärer Ausdruck. – Spock

+17

Sie würden einen regulären Ausdruck verwenden, um nach einem einzelnen Zeichen zu suchen? Das ist eine übermäßige Menge an Overhead, um genau das zu erreichen, was die eingebaute Funktion tut. Es gibt eine Menge Leute, die Regex nicht verstehen, und im Allgemeinen ist die einfachere Antwort die beste. – kemiller2002

29

Wenn Sie den Text in Variable foo:

if (! /^[a-zA-Z0-9]+$/.test(foo)) { 
    // Validation failed 
} 

Dadurch wird getestet und sichergestellt, dass der Benutzer mindestens ein Zeichen eingegeben hat und nur alphanumerische Zeichen eingegeben hat.

5

Verwenden Sie einen regulären Ausdruck, um dies zu erreichen.

function isAlphanumeric(str) { 
return /^[0-9a-zA-Z]+$/.test(str); 
} 
+0

Dies prüft genau * eine * Ziffer und akzeptiert nicht alle alphanumerischen Zeichen, wie das OP wünscht. – cdhowie

+0

@cdhowie .. vergessen a +, aber ich hatte die Frage auch falsch gelesen .. danke für das Aufzeigen. –

2

für alphanumerische Zeichen zu testen, nur:

if (/^[0-9A-Za-z]+$/.test(yourString)) 
{ 
    //there are only alphanumeric characters 
} 
else 
{ 
    //it contains other characters 
} 

Die regex testet für 1 oder mehr (+) des Satzes von Zeichen 0-9, AZ und AZ, mit dem Anfang beginnen der Eingabe (^) und Beenden mit dem Ende der Eingabe ($).

17

überprüfen, ob string (Wort/Satz ...) enthält spezifisches Wort/Zeichen

if ("write something here".indexOf("write som") > -1) { alert("found it"); } 
+0

Funktioniert es auf IE? -> http://stackoverflow.com/questions/3480771/jquery-how-to-see-if-string-contains-substring –

-1

Working perfectly.This exmple wird eine Menge helfen.

<script>  
    function check() 
    { 
     var val = frm1.uname.value; 
     //alert(val); 
     if (val.indexOf("@") > 0) 
     { 
      alert ("email"); 
      document.getElementById('isEmail1').value = true; 
      //alert(document.getElementById('isEmail1').value); 
     }else { 
      alert("usernam"); 
      document.getElementById('isEmail1').value = false; 
      //alert(document.getElementById('isEmail1').value); 
     } 
    } 
</script> 

<body> 
    <h1>My form </h1> 
    <form action="v1.0/user/login" method="post" id = "frm1"> 
     <p> 
      UserName : <input type="text" id = "uname" name="username" /> 
     </p> 
     <p> 
      Password : <input type="text" name="password" /> 
     </p> 
     <p> 
      <input type="hidden" class="email" id = "isEmail1" name = "isEmail"/> 
     </p> 
     <input type="submit" id = "submit" value="Add User" onclick="return check();"/> 
    </form> 
</body> 
1

Try this:

if ('Hello, World!'.indexOf('orl') !== -1) 
    alert("The string 'Hello World' contains the substring 'orl'!"); 
else 
    alert("The string 'Hello World' does not contain the substring 'orl'!"); 

Hier ist ein Beispiel: http://jsfiddle.net/oliverni/cb8xw/

4

Sie sind alle zu hart zu denken. Benutze einfach einen einfachen regulären Ausdruck, es ist dein bester Freund.

var string1 = "Hi Stack Overflow. I like to eat pizza." 
var string2 = "Damn, I fail." 

var regex = /(pizza)/g // Insert whatever phrase or character you want to find 

string1.test(regex); // => true 
string2.test(regex); // => false 

Learn Regex in 5 minutes?

+0

Also, um etwas praktisches mit diesem zu tun, würden Sie einfach führe es in einer Auswahl aus: 'if (string1.test (regex)) {alert (" Er mag Pizza! "); } ' –

+0

Und Ihr alphanumerischer Test wäre ...' var regex =/^ [a-z0-9] + $/i' –

+1

Dies ist rückwärts. Siehe https: //developer.mozilla.org/de-DE/docs/Web/JavaScript/Referenz/Globale_Objekte/RegExp/test regexObj.test (str) –

3
var inputString = "this is home"; 
var findme = "home"; 

if (inputString.indexOf(findme) > -1) { 
    alert("found it"); 
} else { 
    alert("not found"); 
} 
1

String Die Suchfunktion ist auch nützlich. Es sucht nach einem Zeichen sowie einem sub_string in einer gegebenen Zeichenkette.

'apple'.search('pl') kehrt 2

'apple'.search('x') Rückkehr -1

-1

Kevins Antwort richtig ist, aber es erfordert eine "magische" Zahl wie folgt: var containsChar = s.indexOf (somechar) == -1; In diesem Fall müssen Sie wissen, dass -1 für nicht gefunden steht. Ich denke, dass eine etwas bessere Version wäre: var enthältChar = s.IndexOf (somechar)> = 0;

+0

Nun nach dem [Original] (http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June % 201997.pdf # page = 83), [current] (http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.indexof) und [Entwurf] (https://tc39.github.io/ecma262/#sec-string.prototype.indexof) Standards, 'indexOf()' gibt * -1 * zurück, wenn die Zeichenfolge nicht gefunden wird. Es ist also kaum mehr * magisch * als mit * 0 *. – cpburnz

-4
var emailID=document.getElementById("emailField").value; 
    if(!emailID.contains("@")) 
    { 
     alert("Wrong EmailID"); 
    } 
+1

Strings haben keine 'contains()' Methode. – cpburnz

12

Mit ES6 includes

"FooBar".includes("oo"); // true 

"FooBar".includes("foo"); // false 

"FooBar".includes("oo", 2); // false 
+0

Einfach, lesbar und gibt einen booleschen Wert zurück. Perfekt, wenn Sie keinen regulären Ausdruck benötigen. – bryanbraun

3

ES6 enthält eingebaute Methode (includes) in der String prototype, die verwendet werden können, zu prüfen, ob eine andere Zeichenfolge Zeichenfolge enthält oder nicht.

var str = 'To be, or not to be, that is the question.'; 
 

 
console.log(str.includes('To be'));

Nach polyfill kann diese Methode in nicht-unterstützten Browser hinzufügen verwendet werden. (Source)

if (!String.prototype.includes) { 
 
    String.prototype.includes = function(search, start) { 
 
    'use strict'; 
 
    if (typeof start !== 'number') { 
 
     start = 0; 
 
    } 
 
    
 
    if (start + search.length > this.length) { 
 
     return false; 
 
    } else { 
 
     return this.indexOf(search, start) !== -1; 
 
    } 
 
    }; 
 
}

Verwandte Themen