2

数字と非数字のグループを分割する単純な正規表現パターンがあります。したがって、 12AB34CDのような文字列は ["12", "AB", "34", "CD"] のような配列になる必要があります。うまくいきますが、Javascriptでは動作しないようです

var code = "12AB34CD";
var regex =  new RegExp(/\d+|\D+/g);
var codeArray = code.split(regex);
console.log(codeArray);

これは配列になりますが、すべて空の文字列 [""、""、""、""、""]
ここで何が欠けていますか?

4

2 に答える 2

4

使用できますmatch

code.match(/\d+|\D+/g); //=> ["12", "AB", "34", "CD"]
于 2013-07-10T08:01:02.177 に答える
3

JavaScript の正規表現split()にはセパレーター (正規表現に一致するもの) は含まれません。セパレーターの間にあるもののみです。そのため、5 つの空の文字列が得られます。これは、正規表現に 4 つの一致があり、その 4 つの一致の周りに他の文字がないためです。

"" "12" "" "AB" "" "34" "" "CD" ""

    ^       ^       ^       ^
    |       |       |       |
    +-------+-------+-------+--- regex (separator) matches

代わりに、実際には正規表現に一致するものが必要であり、その間のものは必要ないため、.match()代わりに を使用する必要.split()があります。これにより、すべての一致が返されます。

于 2013-07-10T08:02:07.917 に答える