46

如何检测字符串是否包含空格字符?

下面只检测实际的空格字符。我需要检查任何类型的空白。

if(str.indexOf(' ') >= 0){
    console.log("contains spaces");
}
4

5 回答 5

127

您将在字符串中的任何位置找到空格,而不仅仅是单词之间。

如果你想找到任何类型的空格,你可以使用这个,它使用正则表达式:

if (/\s/.test(str)) {
    // It has any kind of whitespace
}

\s表示“任何空白字符”(空格、制表符、垂直制表符、换页符、换行符等),并且会在字符串中的任何位置找到该字符。

根据 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
}

也就是说:匹配字符串的开头 ( ^),后跟零个或多个空格字符,然后是字符串的结尾 ( $)。如果您不想匹配空字符串,请将更改*为 a 。+

如果您将空格作为一般概念:

if (/^\s*$/.test(str)) {
    // It has only whitespace
}

这使用\s(空白)而不是空格,但在其他方面是相同的。(同样,如果您不想匹配空字符串,请更改*为。)+

于 2013-07-12T13:58:55.837 回答
3
function hasSpaces(str) {
  if (str.indexOf(' ') !== -1) {
    return true
  } else {
    return false
  }
}
于 2020-07-18T19:09:35.177 回答
1
var inValid = new RegExp('^[_A-z0-9]{1,}$');
var value = "test string";
var k = inValid.test(value);
alert(k);
于 2019-06-01T06:08:44.470 回答
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的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。


正则表达式电路

jex.im可视化正则表达式:

在此处输入图像描述

于 2019-10-23T17:54:28.540 回答
0
var string  = 'hello world';
var arr = string.split(''); // converted the string to an array and then checked: 
if(arr[i] === ' '){
   console.log(i);
}

我知道正则表达式也可以解决问题!

于 2018-05-12T03:50:16.387 回答