检查字符串是否有空格

Abs*_*Abs 86 javascript whitespace

我正在尝试检查字符串是否有空格.我找到了这个功能,但它似乎没有工作:

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;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我添加了引号RegExp.

有什么不对?有什么更好的我可以用吗?希望JQuery.

CMS*_*CMS 214

您只需在输入字符串上使用indexOf方法:

function hasWhiteSpace(s) {
  return s.indexOf(' ') >= 0;
}
Run Code Online (Sandbox Code Playgroud)

或者您可以在简单的RegEx上使用测试方法:

function hasWhiteSpace(s) {
  return /\s/g.test(s);
}
Run Code Online (Sandbox Code Playgroud)

这也将检查Tab等其他空格字符.

  • 这不会检查其他类型的空白区域(例如,\ t). (15认同)
  • s.indexOf工作正常,但使用'\ s'而不是'' (6认同)
  • 你不能放入s.indexOf(/ ^\s + $ /)吗? (3认同)
  • 这是IE8不支持(只是一个友好的fyi ...) (2认同)

Ian*_*and 19

你的正则表达式不会匹配任何东西.你肯定需要删除引号 - "/"字符就足够了.

/^\s+$/是检查字符串是否是所有空白:

  • ^ 匹配字符串的开头.
  • \s+ 意味着至少1个,可能更多的空间.
  • $ 匹配字符串的结尾.

尝试用/\s/(并且没有引号)替换正则表达式


snn*_*snn 11

test方法是最好的方法。字符类\s检查任何空白字符,包括空格、制表符、回车符和换页符。

全局标志不是必需的,因为我们正在寻找单个匹配项。正则表达式文字比其等效构造函数运行得更快,因为它们在运行时得到了更好的优化。

function hasWhiteSpace(s) {
  return (/\s/).test(s);
}

console.log(hasWhiteSpace("Hello World!"));
console.log(hasWhiteSpace("HelloWorld!"));

console.time('hasWhiteSpace');
for (let i = 0; i < 1_000_000; i++) {
  hasWhiteSpace("Some text here");
}
console.timeEnd('hasWhiteSpace');
Run Code Online (Sandbox Code Playgroud)

如果您仅使用某些空白字符,则可以利用数组方法,例如some在第一次成功匹配时返回,但它们会比正则表达式的测试方法慢:

// Use includes method on string
function hasWhiteSpace(s) {
  const whitespaceChars = [' ', '\t', '\n'];
  return whitespaceChars.some(char => s.includes(char));
}

console.log(hasWhiteSpace("Hello World!"));
console.log(hasWhiteSpace("HelloWorld!"));

console.time('hasWhiteSpace');
for (let i = 0; i < 1_000_000; i++) {
  hasWhiteSpace("Some text here");
}
console.timeEnd('hasWhiteSpace');
Run Code Online (Sandbox Code Playgroud)

正如您在性能基准测试中看到的,该方法比无论如何都不会被注意到的方法test稍快。some


Enr*_*cio 6

如果您使用 ECMAScript6 (ES6) 或更新版本,最简单的方法如下所示

// looking just for spaces   
function hasWhiteSpace(s) {
  return s.includes(' ');
}
Run Code Online (Sandbox Code Playgroud)

上述函数有一些限制,

  • 它只匹配空格,但不匹配其他可能的空格字符作为制表符或换行符。
  • 它不支持正则表达式。

如果我们需要使用正则表达式来匹配所有可能的空白字符,我们可以使用search自 ECMAScript1 (ES1) 以来可用的选项:

// looking for spaces, tabs, line breakers, etc. 
// live example: https://www.w3schools.com/jsref/jsref_regexp_whitespace.asp
function hasWhiteSpace(s) {
  return s.search(/\s/);
}

// looking just for spaces, equivalent to includes option
function hasWhiteSpace(s) {
  return s.search(/ /);
}
Run Code Online (Sandbox Code Playgroud)

这还将检查其他空白字符,例如制表符。