2013-04-16 16 views
7

Wydaje się całkiem proste, ale nie może zrozumieć, dlaczego ten kod javascript nie działa, zwracając wartość false, kiedy spodziewa się prawdziwości) - Zgaduję, że musi coś zrobić ze znakami ucieczki? Czy ktoś mógłby mi pomóc napisać blok JS, który zwróci wartość true, jeśli pojawi się spacja?Regex, aby sprawdzić, czy białe znaki są obecne?

var inValid = new RegExp("[\s]"); 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 

Odpowiedz

15

Nie trzeba wsporniki, trzeba by uciec odwrotny ukośnik (w przypadku używania ciągu znaków) i wbudowana składnia regex jest łatwiejsza, ponieważ nie trzeba uciec od ukośników odwrotnych, gdy używana jest wbudowana składnia regex.

var inValid = /\s/; 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 
3

Musisz uciec backslash jeśli tworzysz swój obiekt RegExp z ciągu dosłownym:

var inValid = new RegExp("[\\s]"); 

Alternatywnie można po prostu użyć następujących:

var inValid = /\s/; 

ta wykorzystuje regularne wyrażenie dosłowne, więc unikanie odwrotnego ukośnika nie jest konieczne i nie ma tu potrzeby stosowania klasy znaków, więc również upuściłem nawiasy kwadratowe.

3

Trzeba podwójny charakter ucieczki:

jeden dla „S” i jeden dla „\” sama:

var inValid = new RegExp("[\\s]"); 
3

Jeśli chcesz dopasować coś tam, ale bez spacji:

alert(/^\S+$/.test(value)); 
Powiązane problemy