如何检查字符串是不是包含字符和空格,而不仅仅是空格?
Posted
技术标签:
【中文标题】如何检查字符串是不是包含字符和空格,而不仅仅是空格?【英文标题】:How can I check if string contains characters & whitespace, not just whitespace?如何检查字符串是否包含字符和空格,而不仅仅是空格? 【发布时间】:2011-01-03 02:49:01 【问题描述】:检查字符串是否仅包含空格的最佳方法是什么?
字符串可以包含组合和空格的字符,但不能只是空格。
【问题讨论】:
【参考方案1】:不要检查整个字符串是否只有空格,只需检查是否有至少一个字符 non 空格:
if (/\S/.test(myString))
// string is not empty and not just whitespace
【讨论】:
请注意 myString 为空值。它将返回 true:/\S/.test(null) == true 很多这些答案中都有正则表达式!这是否意味着没有原生方法来检测 js 中的东西?有没有 string.IsWhitespace 什么的?也没有原生修剪吗? @JonnyLeeds 由于正则表达式甚至在 js 中支持语法,因此可以说它实际上比任何已发布的实用程序方法更原生;)【参考方案2】:如果您的浏览器支持trim()
函数,最简单的答案
if (myString && !myString.trim())
//First condition to check if string is not empty
//Second condition checks if string contains just whitespace
【讨论】:
现在 IE 8 是 RIP,这是依赖本机实现的最简洁和最高效的解决方案。它适用于制表符和新行。【参考方案3】:if (/^\s+$/.test(myString))
//string contains only whitespace
这将检查 1 个或多个空白字符,如果您还匹配一个空字符串,则将 +
替换为 *
。
【讨论】:
【参考方案4】:好吧,如果你使用的是 jQuery,那就更简单了。
if ($.trim(val).length === 0)
// string is invalid
【讨论】:
也适用于换行符和制表符,而上面的正则表达式示例并不适用,因为它们只是在寻找除空白之外的任何内容。虽然,我确信有一些正则表达式知识的人可以创建一个正则表达式,在搜索中也包括制表符/换行符。 当 val 被分配空格时不起作用,在我的例子中是四个空格。【参考方案5】:只需对照这个正则表达式检查字符串:
if(mystring.match(/^\s+$/) === null)
alert("String is good");
else
alert("String contains only whitespace");
【讨论】:
我阅读问题的方式是说 /any/ 空格是允许的,只要字符串不是 /only/ 空格。如果字符串为空,它对如何处理保持沉默,因此可能是 nickf 的答案仍然更好。【参考方案6】:if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
【讨论】:
【参考方案7】:当我想在我的字符串中间允许空格但不在开头或结尾时,我最终使用的正则表达式是这样的:
[\S]+(\s[\S]+)*
或
^[\S]+(\s[\S]+)*$
所以,我知道这是一个老问题,但你可以这样做:
if (/^\s+$/.test(myString))
//string contains characters and white spaces
或者你可以按照nickf所说的去做并使用:
if (/\S/.test(myString))
// string is not empty and not just whitespace
【讨论】:
【参考方案8】:我使用以下方法来检测字符串是否仅包含空格。它也匹配空字符串。
if (/^\s*$/.test(myStr))
// the string contains only whitespace
【讨论】:
【参考方案9】:这可以是快速的解决方案
return input < "\u0020" + 1;
【讨论】:
那只是在做return input < " 1";
这只是在做字母比较。只要输入排序小于“ 1”,它就会返回true。示例:return " asdfv34562345" < "\u0020" + 1;
计算结果为真。以上是关于如何检查字符串是不是包含字符和空格,而不仅仅是空格?的主要内容,如果未能解决你的问题,请参考以下文章