Chciałem napisać wyrażenie regularne, aby policzyć liczbę spacji/kart/znaków nowej linii w kawałku tekstu. Więc ja naiwnie napisał następujące: -Policz liczbę dopasowań wyrażenia regularnego w JavaScript
numSpaces : function(text) {
return text.match(/\s/).length;
}
Dla niektórych nieznanych przyczyn zawsze zwraca 1
. Jaki jest problem z powyższym stwierdzeniem? I od tego czasu rozwiązać problem z następujących czynności: -
numSpaces : function(text) {
return (text.split(/\s/).length -1);
}
Działa to tak długo, jak masz co najmniej jedno miejsce w swoim wejściu. W przeciwnym razie funkcja match() denerwująco zwróci wartość null. – sfink
sfink ma rację, na pewno chcesz sprawdzić, czy match() zwrócił wartość null: 'var result = text.match (/ \ s/g); wynik zwrotu? result.length: 0; ' –
Można również zabezpieczyć się przed wartością zerową za pomocą tej konstrukcji:' (str.match (...) || []) .length' –