Also basierend auf diesem Link, Is it a bug in Ecmascript - /\S/.test(null) returns true?, sieht es so aus, als ob der Null-Wert zu einer Zeichenkette 'null' gezwungen wird. WTF? Warum in aller Welt ist das so geplant? Ich kann auch keine Dokumentation zu diesem Verhalten finden. Gibt es eine Möglichkeit, false
für null/undefined Werte zurückgeben (ohne Hardcoding in Prüfungen für "Null", etc.)?Einfachere Möglichkeit, dass RegExp.test() false für Nullwerte zurückgibt?
0
A
Antwort
1
Das Argument von RegExp.test()
wird erwartet, zu überprüfen, eine sein Zeichenfolge. Wenn es nicht ist, wird es in einen String umgewandelt:
var regex = /\[object Object\]/;
console.log(regex.test({})); // true
Dieses Standardverhalten in JavaScript ist. Z.B. "null".replace(null, {}) === "[object Object]"
.
Follow Check if a variable is a string zu überprüfen, ob das Argument eine Zeichenfolge ist:
if (typeof myVar === 'string' || myVar instanceof String) { ... }
else return false;
0
Sie können die Testmethode überschreiben.
old = regex.test
regex.test = function(str){
str = str? str: "";
return old.call(this, str);
}
regex.test(null); // false
Eine Möglichkeit ist Ihre erwartete Ausgabe zu erhalten ist, den Wert zuerst und ersetzen sie durch ""
leere Zeichenfolge bei null
oder undefined
let regex = /[a-z]+/;
function test (inp){
return regex.test(inp? inp: '');
}
test(null); // false
test(undefined); // false
1
Wenn Sie eine Variable zu test, könnten Sie tun:
regex.test(var || '')
, so dass es auf den Standard wird Leerstring, wenn es nicht gesetzt ist.
Verwandte Themen
- 1. Warum String.Equals false zurückgibt?
- 2. R: False oder NA, die False zurückgibt
- 3. React.js onClick-Ereignis, das alle Nullwerte zurückgibt
- 4. RemotingServices.IsObjectOutOfAppDomain, wenn es false zurückgibt?
- 5. Standardwerte für Nullwerte
- 6. Hibernate Nullwerte für @CollectionOfElements
- 7. regex, die false und true zurückgibt
- 8. Zulassen, dass temporäre Tabellen Nullwerte akzeptieren
- 9. Boolean VB-Ausdruck, der für Integer 1 false zurückgibt
- 10. Datensatz, der Nullwerte zulässt, selbst wenn AllowDBNull = False?
- 11. Debuggen speichern() false zurückgibt CakePHP 3.0
- 12. Ext.util.Format.undef Funktionalität für Nullwerte
- 13. Gibt es eine einfachere Möglichkeit, boolesche Konvertierungen durchzuführen?
- 14. Gibt es eine bessere und/oder einfachere Möglichkeit, sich abzumelden?
- 15. Gibt es eine einfachere Möglichkeit zur Bereitstellung auf WebSphere?
- 16. Javascript-Optimierung - Gibt es eine einfachere Möglichkeit, Javascript zu beschleunigen?
- 17. Einfachere Möglichkeit, die C# -Klasse als XML-Text zu serialisieren
- 18. Einfachere Möglichkeit, Daten aus einer Liste von Zeichenvektoren zu invertieren?
- 19. Gibt es eine einfachere Möglichkeit, Openid zu implementieren?
- 20. Verhindern, dass ArrayList.Add() den Index zurückgibt
- 21. Gibt es eine andere einfachere Möglichkeit, dieses Programm zu schreiben?
- 22. Einfachere Möglichkeit, eine DOMSource in eine StreamSource umzuwandeln?
- 23. Was bewirkt, dass das FederatedAuthentication.SessionAuthenticationModule NULL zurückgibt?
- 24. Was bewirkt, dass WriteFile ERROR_ACCESS_DENIED zurückgibt?
- 25. Gibt es eine einfachere Möglichkeit, ein rekursives Fn zu memozieren?
- 26. PySide: Einfachere Möglichkeit, GUI von einem anderen Thread zu aktualisieren
- 27. Angular - einfachere Möglichkeit, den Bereich während des Debuggens anzuzeigen?
- 28. Einfachere Möglichkeit, die kumulative Häufigkeitsverteilung in ggplot zu plotten?
- 29. 10 Können .equals überschrieben werden, sodass a.equals (a) false zurückgibt?
- 30. is_readable() gibt false zurück, während require_once true zurückgibt
Wie wäre es mit e. G. '/, /. test ([,,,]) === true' wenn das Argument nicht null ist, aber kein String? –