如何检测字符串是否包含空格字符?
以下仅检测实际空格字符.我需要检查任何类型的空白.
if(str.indexOf(' ') >= 0){
console.log("contains spaces");
}
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 71
你所拥有的将在字符串中的任何地方找到一个空格,而不仅仅是在单词之间.
如果要查找任何类型的空格,可以使用此方法,它使用正则表达式:
if (/\s/.test(str)) {
// It has any kind of whitespace
}
Run Code Online (Sandbox Code Playgroud)
\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
}
Run Code Online (Sandbox Code Playgroud)
这就是说:匹配字符串(^)的开头,后跟零个或多个空格字符,后跟字符串结尾($).如果您不想匹配空字符串,请将其更改*为a +.
如果你的意思是将空格作为一般概念:
if (/^\s*$/.test(str)) {
// It has only whitespace
}
Run Code Online (Sandbox Code Playgroud)
它使用\s(空白)而不是空格,但在其他方面是相同的.(再次,改变*到+如果你不想匹配一个空字符串).