Quería escribir una expresión regular para contar el número de espacios/pestañas/nueva línea en un fragmento de texto. Así que, ingenuamente, escribió lo siguiente: -Contar el número de coincidencias de una expresión regular en Javascript
numSpaces : function(text) {
return text.match(/\s/).length;
}
Por algunas razones desconocidas siempre devuelve 1
. ¿Cuál es el problema con la declaración anterior? ya que he resuelto el problema con lo siguiente: -
numSpaces : function(text) {
return (text.split(/\s/).length -1);
}
Esto funciona siempre y cuando tenga al menos un espacio en su entrada. De lo contrario, match() arroja nulo de forma molesta. – sfink
sfink es correcto, definitivamente quiere comprobar si match() devolvió null: 'var result = text.match (/ \ s/g); resultado de devolución? result.length: 0; ' –
También puede protegerse contra el nulo usando esta construcción:' (str.match (...) || []) .length' –