Javascript - 使用REGex列出所有空白索引

时间:2015-11-26 09:58:13

标签: javascript regex

我想将所有空白索引列入数组。

我试试这个:

<script>
    var waw  
    var text1="Saya cinta bahasa java"
    var waw= text1.search(/\s/g)
    alert(waw)
    </script>

失败。它只显示第一个空白索引。虽然我需要做的是将所有这些列入一个数组变量,如waw。

应该是:

waw[0]= 4
waw[1]= 10
waw[2]= 17

2 个答案:

答案 0 :(得分:2)

我不知道这是什么意思,但这是一种做法。

replace方法不会修改原始字符串,所以只需调用它并传递一个回调函数,它将在每次匹配时调用,并获得匹配,索引和捕获组的参数。

所以我只是把所有索引都推到了数组中。

var text1 = "Saya cinta bahasa java"

var indexes = [];

text1.replace(/\s/g, function(m, i) {
  console.log(i);
  indexes.push(i);
});

document.body.innerHTML = indexes;

答案 1 :(得分:2)

要获取字符串中每个空白字符的索引数组,只需遍历字符串中的所有\s模式匹配,获取匹配项并检查正则表达式lastIndex属性。无需替换任何内容或使用回调函数。

var waw = [];
re = /\s/g;
var text1="Saya cinta bahasa java";
while((m = re.exec(text1)) !== null) {
  waw.push(re.lastIndex - m.length);
}
document.write(JSON.stringify(waw)); // => [4,10,17]

请注意,在JavaScript中,\s仅匹配ASCIII空格。

以下是 Unicode空白 的列表(请参阅Unicode Character Categories):

分隔符,空格\p{Zs}

  

U + 0020 SPACE
  U + 00A0 NO-BREAK SPACE
  U + 1680 OGHAM SPACE MARK
  U + 2000 EN QUAD
  U + 2001 EM QUAD
  U + 2002 EN SPACE
  U + 2003 EM空间
  U + 2004三维空间
  U + 2005 FOUR-PER-EM SPACE
  U + 2006 SIX-PER-EM SPACE
  U + 2007数字空间
  U + 2008 PUNCTUATION SPACE
  U + 2009 THIN SPACE
  U + 200A头发空间
  U + 202F NARROW NO-BREAK SPACE
  U + 205F MEDIUM MATHEMATICAL SPACE
  U + 3000 IDEOGRAPHIC SPACE

分隔符,行 \p{Zl}

  

U + 2028 LINE SEPARATOR

分隔符,段落 \p{Zp}

  

U + 2029 PARAGRAPH SEPARATOR

因此,您可以使用以下正则表达式获取所有空格:

var re = /[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000\u2028\u2029]/g;