Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查javascript中的大量空白以防止发送空白数据,并修剪中间空白_Javascript_Jquery - Fatal编程技术网

检查javascript中的大量空白以防止发送空白数据,并修剪中间空白

检查javascript中的大量空白以防止发送空白数据,并修剪中间空白,javascript,jquery,Javascript,Jquery,我对如何解决这个问题有点困惑。似乎是标准和普遍发生,但找不到任何有价值的。我有一个HTML文本区和一个用于输入的文本框。我想验证以下内容: 不应允许用户在文本区域中输入大量空格,因此,如果15个字符是最小值,则只有16个空格字符不应计入有效数据。简单的字符计数无法检测到这一点 可以输入16个空格和一个字母,但这仍然是无效数据!无论如何,在这里检查有效性(根据下面的点,基本上应计为2个字符) 修剪不必要的空白-例如,如果有人输入一个字符/单词,然后再输入10个空白,然后是另一个,然后是一个字符和另

我对如何解决这个问题有点困惑。似乎是标准和普遍发生,但找不到任何有价值的。我有一个HTML文本区和一个用于输入的文本框。我想验证以下内容:

  • 不应允许用户在文本区域中输入大量空格,因此,如果15个字符是最小值,则只有16个空格字符不应计入有效数据。简单的字符计数无法检测到这一点
  • 可以输入16个空格和一个字母,但这仍然是无效数据!无论如何,在这里检查有效性(根据下面的点,基本上应计为2个字符)
  • 修剪不必要的空白-例如,如果有人输入一个字符/单词,然后再输入10个空白,然后是另一个,然后是一个字符和另一组空白,我希望他们被修剪成一个空白。就像你在上面输入答案/新问题一样。如果您输入一组空白,它将自动对其进行修剪。我试着四处搜索,但没有找到具体的空格
  • 直观地说,如果我能让#3的解起作用,我想它会自动将它输入到一个字符计数器函数中,它会是有效的,对吗


    你知道怎么做吗?jQuery或javascript都是可以接受的:)

    您可以通过正则表达式()将多个空格的所有匹配项替换为一个空格:

    其工作原理是全局查找一个空间,后跟一个或多个空间,并将其替换为仅一个空间

    注意,正则表达式是特定于空间的。它不处理其他形式的空白。如果要用一个空格替换所有出现的两个或多个空白字符,可以执行以下操作:

    var text = "a \t\r\n b \t\r\n c";
    text = text.replace(/\s\s+/g, ' ');
    alert(text); // "a b c"
    

    使用
    \s
    (空白)字符类的。请注意,大多数实现在正确应用
    \s
    方面做得相当好,但其中一些实现存在与Unicode定义的一些更深奥的空白字符相关的错误,尽管规范明确指出它们也应该被处理。(你可以了解你最喜欢的浏览器是如何工作的,或者阅读更多关于这个问题的内容。)这不太可能你会关心你描述的用例,你可能不必担心它。

    你能详细说明一下“实现错误”的要点吗?我不清楚什么样的bug,它们是重要的考虑因素,或者寻找什么来搜索和发现正则表达式应该是
    /[\W]{2,}/g
    ,所以用户不能提交15个非单词字符,比如制表符或换行符@Jim:
    \s
    包括选项卡、换行符、表单提要等。;这就是它的目的。使用
    \W
    (任何非单词字符)将删除许多其他字符。例如,将您的regexp应用于我在这篇评论中的第一句话将产生
    “s cover tabs and newlines Using W任何非单词字符都将删除许多其他字符。”
    ,我无法想象这是真正需要的。:-)(另外,
    [\W]
    =
    \W
    ,因为空格不是一个单词字符。)@Nupul:对于您的主要空格——空格、制表符、换行符、回车符、表单提要等——实现很好。但是Unicode还有许多其他的空白字符,包括一个非间断空格的实际字符代码(而不是我们通常在HTML中使用的实体)、一个特定宽度的空格的字符代码(一个
    M
    的宽度、一个
    N
    的宽度等等),你不太可能在意,在今天这个时代,我认为大多数浏览器基本上都是正确的。如果您想了解更多信息,我添加了一篇文章的链接。:-)
    var text = "a \t\r\n b \t\r\n c";
    text = text.replace(/\s\s+/g, ' ');
    alert(text); // "a b c"