javascript正则表达式为空白或

时间:2009-07-22 22:29:19

标签: javascript regex

我正在为空白寻找一个javascript正则表达式。 我在循环中检查几个不同的字符串,我需要找到其中有大空格的字符串。

白色空格字符串构建在一个循环中,就像这样......

请将此代码读作var whitespace = " ",然后循环就会在其上连接更多不间断的空格。

var whitespace = " "

        for (var x = 0; x < 20; x++) {
            whitespace += "&nbsp;"
        }

然后稍后在字符串concat中使用它。

sometext += whitespace + someData;

我需要识别包含空格(20个空格)的字符串。

或者我应该做一个contains(whitespace)或类似的东西。

感谢任何帮助。

干杯, 〜在圣地亚哥

4 个答案:

答案 0 :(得分:35)

对于这个具体的问题,Yogi是正确的 - 你不需要正则表达式,没有它你可能会更好。

为了将来参考,如果有其他人来看,正则表达式具有空格的特殊字符:

\s

如果你正在寻找20个空格(不是制表符,换行符等),那么在JS的说法中(正则表达式文字可以用正斜杠括起来),你可以这样做:

/ {20}/

您还需要注意的是,许多浏览器正则表达式引擎都不会将非中断SPace视为空白。 NBSP字符的unicode表示形式为:

\u00A0

组合,寻找20个空格字符(包括制表符等)的任意组合或连续的NBSP(方括号表示'字符类'):

/[\s\u00A0]{20}/

编辑:纳入托马斯关于NBSP的观点。如果愿意的话,发表评论和/或回答投票 - 我知道我有。

答案 1 :(得分:8)

至少 IE和Chrome在 \ s 中不包含字符160 (nbsp)。包含它的正则表达式是

wsregex = /[\s|\u00A0]/

另见 http://www.adamkoch.com/2009/07/25/white-space-and-character-160/ 谁报道了IE,但同时铬也明显改为不包括它。

答案 2 :(得分:1)

如果您将空格定义为20个空格,则可以执行

var input = whitespace + someData;
if(input.indexOf(whitespace) != -1)
{
   //input contains whitespace.
}

如果没有正则表达式,则无需使用正则表达式。

答案 3 :(得分:0)

对于IE(我在IE7中测试过),\s&nbsp;不匹配,但Chrome和Firefox确实如此。因此,如果您想要消除空格而不是&nbsp;(没有中断空格),请不要使用\s,因为它不是浏览器安全的。

例如,您想要消除所有空格,包括\ n \ t而不是&nbsp;,您可以使用\n \t和空格,即:str.replace(/[\t \n]+/g, "")