2016-05-24 2 views
0

Ich muss überprüfen, ob eine Zeichenfolge ein Sonderzeichen enthält. Ich habe Regex für andere Felder verwendet, aber dafür wird das Senden nicht verhindert, wenn kein spezielles Zeichen vorhanden ist. Ob ich ein ! benutze oder nicht, es überspringt es immer.Wie kann ich mit jquery überprüfen, ob eine Zeichenfolge ein Sonderzeichen enthält?

if (str.search(/[^\!\@@\#\$\%\^\&\*\(\)\_\+\.\,\;\:]/) == -1) { 
    alert("Your password must contain at least 1 special character."); 
    e.preventDefault(); 
    return ("bad_char"); 
} 
+0

tun könnte Sieht aus wie Sie das erste '^' entfernen sollte. Und du hast das Muster überschätzt. BTW, mit 'RegExp # test()' ist eine bessere Passform für den Scheck, denke ich. –

+0

Verwenden Sie '/^[a-zA-Z0-9-] * $ /'. Es wird nur dann wahr, wenn kein Sonderzeichen vorhanden ist. –

Antwort

1

können Sie verwenden

if (!/[[email protected]#$%^&*()_+.,;:]/.test("ssss")) { 
 
    alert("Your password must contain at least 1 special character."); 
 
    e.preventDefault(); 
 
    return ("bad_char"); 
 
}

Hauptpunkte:

  • Es ist besser, RegExp#test() zu verwenden um zu überprüfen, ob eine Übereinstimmung mit einem regulären Ausdruck ist
  • Keine Notwendigkeit, die Symbole zu umgehen, die Sie in der Zeichenklasse haben
  • Sie können das Ergebnis des Tests "negieren" und auf diese Weise sicherstellen, dass die Zeichenfolge eines dieser Symbole enthält.
+0

Hinweis: Ich glaube nicht, dass Sie das '@' verdoppeln müssen (es wird nur in Razor gemacht, glaube ich) –

0

Sie können dies versuchen.

if(str.match(/[^A-Za-z0-9]/) === null) 
{ 
    // not found 
} 
else 
{ 
    // found 
} 

Klarstellung: Wenn Char nicht alphanumerische ist, dann ist es Special Character.

0

Sie mögen dieses

if(/^[a-zA-Z0-9- ]*$/.test(str) == false) { 
     console.log("contains special character"); 
    } 
Verwandte Themen