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