如何检测字符串是否包含空格字符?
以下仅检测实际的空格字符。我需要检查任何类型的空白。
if(str.indexOf(' ') >= 0){
console.log("contains spaces");
}
答案 0 :(得分:55)
你所拥有的将在字符串中找到空格 ,而不仅仅是单词之间。
如果你想找到任何类型的空格,你可以使用它,它使用正则表达式:
if (/\s/.test(str)) {
// It has any kind of whitespace
}
\s
表示“任何空白字符”(空格,制表符,垂直制表符,换页符,换行符等),并会在字符串中的任何位置找到该字符。
According to MDN,\s
相当于:[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]
。
出于某种原因,我最初将您的问题视为“如何查看字符串是否包含仅空格?”所以我回答了下面的问题。但正如@CrazyTrain指出的那样,这不是问题所在。不过,我会离开它,以防万一...
如果你的意思是字面上的空格,正则表达式可以做到:
if (/^ *$/.test(str)) {
// It has only spaces, or is empty
}
说:匹配字符串的开头(^
),后跟零个或多个空格字符,后跟字符串的结尾($
)。如果您不想匹配空字符串,请将*
更改为+
。
如果你的意思是将空格作为一般概念:
if (/^\s*$/.test(str)) {
// It has only whitespace
}
那使用\s
(空格)而不是空格,但在其他方面是相同的。 (如果您不想匹配空字符串,请再次将*
更改为+
。)
答案 1 :(得分:2)
function hasSpaces(str) {
if (str.indexOf(' ') !== -1) {
return true
} else {
return false
}
}
答案 2 :(得分:0)
var string = 'hello world';
var arr = string.split(''); // converted the string to an array and then checked:
if(arr[i] === ' '){
console.log(i);
}
我知道正则表达式也可以做到这一点!
答案 3 :(得分:0)
var inValid = new RegExp('^[_A-z0-9]{1,}$');
var value = "test string";
var k = inValid.test(value);
alert(k);
答案 4 :(得分:0)
第二种选择是使用类似以下表达式来检查空格(\S
)是否为空:
^\S+$
function has_any_spaces(regex, str) {
if (regex.test(str) || str === '') {
return false;
}
return true;
}
const expression = /^\S+$/g;
const string = 'foo baz bar';
console.log(has_any_spaces(expression, string));
在这里,我们可以将push
个不带空格的字符串放入数组:
const regex = /^\S+$/gm;
const str = `
foo
foo baz
bar
foo baz bar
abc
abc abc
abc abc abc
`;
let m, arr = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// Here, we push those strings without spaces in an array
m.forEach((match, groupIndex) => {
arr.push(match);
});
}
console.log(arr);
如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。
jex.im可视化正则表达式: