J'essaie de vérifie si une chaîne a un espace blanc. J'ai trouvé cette fonction mais elle ne semble pas fonctionner:
function hasWhiteSpace(s)
{
var reWhiteSpace = new RegExp("/^\s+$/");
// Check for white space
if (reWhiteSpace.test(s)) {
//alert("Please Check Your Fields For Spaces");
return false;
}
return true;
}
Au fait, j'ai ajouté des guillemets à RegExp
.
Y a-t-il quelque chose qui ne va pas? Y a-t-il quelque chose de mieux que je puisse utiliser? Espérons que JQuery.
Vous pouvez simplement utiliser la méthode indexOf sur la chaîne d'entrée:
function hasWhiteSpace(s) {
return s.indexOf(' ') >= 0;
}
Ou vous pouvez utiliser la méthode de test, sur un simple RegEx:
function hasWhiteSpace(s) {
return /\s/g.test(s);
}
Cela permettra également de vérifier d'autres caractères d'espaces blancs comme Tab.
Votre regex ne correspond à rien, tel qu'il est. Vous devez absolument supprimer les guillemets - le "/"
caractères suffisent.
/^\s+$/
vérifie si la chaîne est ALL espaces:
^
correspond au début de la chaîne.\s+
signifie au moins 1, voire plusieurs espaces.$
correspond à la fin de la chaîne.Essayez de remplacer la regex par /\s/
_ (et pas de guillemets)
Cette fonction vérifie les autres types d'espaces, pas seulement les espaces (tabulation, retour à la ligne, etc.).
import some from 'lodash/fp/some'
const whitespaceCharacters = [' ', ' ',
'\b', '\t', '\n', '\v', '\f', '\r', `\"`, `\'`, `\\`,
'\u0008', '\u0009', '\u000A', '\u000B', '\u000C',
'\u000D', '\u0020','\u0022', '\u0027', '\u005C',
'\u00A0', '\u2028', '\u2029', '\uFEFF']
const hasWhitespace = char => some(
w => char.indexOf(w) > -1,
whitespaceCharacters
)
console.log(hasWhitespace('a')); // a, false
console.log(hasWhitespace(' ')); // space, true
console.log(hasWhitespace(' ')); // tab, true
console.log(hasWhitespace('\r')); // carriage return, true
Si vous ne voulez pas utiliser Lodash , alors voici une implémentation simple de some
avec 2 s
:
const ssome = (predicate, list) =>
{
const len = list.length;
for(const i = 0; i<len; i++)
{
if(predicate(list[i]) === true) {
return true;
}
}
return false;
};
Il suffit ensuite de remplacer some
par ssome
.
const hasWhitespace = char => some(
w => char.indexOf(w) > -1,
whitespaceCharacters
)
Pour ceux dans Node, utilisez:
const { some } = require('lodash/fp');
Voici ma validation suggérée:
var isValid = false;
// Check whether this entered value is numeric.
function checkNumeric() {
var numericVal = document.getElementById("txt_numeric").value;
if(isNaN(numericVal) || numericVal == "" || numericVal == null || numericVal.indexOf(' ') >= 0) {
alert("Please, enter a numeric value!");
isValid = false;
} else {
isValid = true;
}
}