我正在为空白寻找一个javascript正则表达式。 我在循环中检查几个不同的字符串,我需要找到其中有大空格的字符串。
白色空格字符串构建在一个循环中,就像这样......
请将此代码读作var whitespace = " "
,然后循环就会在其上连接更多不间断的空格。
var whitespace = " "
for (var x = 0; x < 20; x++) {
whitespace += " "
}
然后稍后在字符串concat中使用它。
sometext += whitespace + someData;
我需要识别包含空格(20个空格)的字符串。
或者我应该做一个contains(whitespace)
或类似的东西。
感谢任何帮助。
干杯, 〜在圣地亚哥
答案 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
与
不匹配,但Chrome和Firefox确实如此。因此,如果您想要消除空格而不是
(没有中断空格),请不要使用\s
,因为它不是浏览器安全的。
例如,您想要消除所有空格,包括\ n \ t而不是
,您可以使用\n \t
和空格,即:str.replace(/[\t \n]+/g, "")