Sicherstellen, dass der von Window.prompt zurückgegebene Wert nur Buchstaben enthält

8

Ich versuche zu überprüfen, ob Benutzereingaben, die einer Variablen zugewiesen sind, überprüft werden können, um sicherzustellen, dass es sich um eine Zeichenfolge und nicht um eine Zahl handelt. Ich habe versucht, typeof() zu verwenden, aber egal was, die Benutzereingabe wird als eine Zeichenfolge markiert, selbst wenn der Benutzer eine Nummer eingibt. Zum Beispiel:

%Vor%

Gibt es etwas, das ich verwenden könnte, das der Funktion NaN ähnlich ist, aber für Zeichenfolgen?

    
Andyrc 10.11.2014, 03:35
quelle

5 Antworten

5

Von der doc Eingabeaufforderung

%Vor%
  • Ergebnis ist eine Zeichenfolge , die den vom Benutzer eingegebenen Text enthält, oder die Wert null
  • text ist eine Textzeichenfolge, die dem Benutzer angezeigt wird. Dieser Parameter ist optional und kann weggelassen werden, wenn in der Eingabeaufforderungsfenster.
  • value ist eine Zeichenfolge, die den im Text angezeigten Standardwert enthält Eingabefeld. Es ist ein optionaler Parameter. Beachten Sie, dass im Internet Explorer 7 und 8, wenn Sie diesen Parameter nicht angeben, die Zeichenfolge "undefined" ist der Standardwert.

Der Rückgabewert ist eine Zeichenfolge oder null . In Ihrem Beispiel ist y unabhängig von der Benutzereingabe immer eine Zeichenfolge oder Objekt .

In Ihrem Fall, wenn Sie filtern möchten, wenn Benutzer Nicht-Buchstaben eingeben, können Sie einen regulären Ausdruck wie:

verwenden

%Vor%
    
Alex Char 10.11.2014 03:39
quelle
3

Das von prompt zurückgegebene Ergebnis ist immer eine Zeichenkette (oder möglicherweise der Wert null ). Das gibt die Methode zurück. Es ist wichtig daran zu denken, dass "123" tatsächlich eine Zeichenkette ist, obwohl es auch die Zeichenkette einer Zahl ist.

In deinem Fall versuchst du nicht wirklich herauszufinden, ob es eine Zeichenfolge ist; Sie versuchen sicherzustellen, dass es sich nicht um eine Nummer handelt. Allgemeiner gesagt, deine Frage lautet "eine Buchstabenkette".

Das bedeutet nur, dass Sie sicherstellen müssen, dass die resultierende Zeichenfolge nur Buchstaben und keine Ziffern oder Symbole enthält. Sie können dies mit einem einfachen regulären Ausdruck tun:

%Vor%

Einige Punkte, die hier zu beachten sind. Dies erlaubt nicht die leere Zeichenfolge "" ; Wenn Sie dies zulassen müssen, ändern Sie + (ein oder mehrere Quantifizierer) in * (null oder mehr) in der Regex. Sie müssen auch explizit nach null suchen (indem Sie x != null ausführen), anstatt !x , da "" falsch ist.

Dieser Regex lässt auch keine Leerzeichen zu. Sie können den Space Matcher in die Zeichenklasse aufnehmen, um dies zu ermöglichen.

    
nbrooks 10.11.2014 05:23
quelle
2

Versuchen Sie es %Code% um es zu überprüfen.

%Vor%     
mrmoment 10.11.2014 03:39
quelle
2

Der von prompt() zurückgegebene Wert ist entweder ein String oder null , wenn der Benutzer abgebrochen hat.

Wahrscheinlich möchten Sie bestätigen, dass die Eingabe alphabetisch ist. Das können Sie mit einer Regex machen, zB ^[a-z]+$

    
alex 10.11.2014 03:41
quelle
-2

Probieren Sie diesen Code:

%Vor%

Der Typ von x ist ein String oder null, auch wenn Sie eine Zahl eingeben.

    
Kamal 10.11.2014 03:42
quelle

Tags und Links