我想将所有空白索引列入数组。
我试试这个:
<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
答案 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;