我想将所有空白索引列出到一个数组中。

我尝试这样:

<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

最佳答案

要获取字符串中每个空格字符的索引数组,您只需要遍历字符串中的所有\s模式匹配项,获取匹配项并检查regex 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} :



分隔符,行 \p{Zl}:



分隔符,段落 \p{Zp}:



因此,您可以使用以下正则表达式获取所有空格:
var re = /[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000\u2028\u2029]/g;

09-18 16:20