3

正規表現を使用して、番号の出現に基づいて文字列を分割するにはどうすればよいですか?

たとえば、次のような文字列があります。

var text = "1 dozen 3 dozen 4 dozen kg";

私はそれを次のように分割する必要があります、

期待される出力:

1 dozen   
3 dozen   
4 dozen kg

次の正規表現を試しましたが、

var text = "1 dozen 3 dozen 4 dozen kg";
var regex = /(\d\s)/g;  // regex I tried
console.log(text.split(regex));

しかし、結局

[""、"1"、"ダース"、"3"、"ダース"、"4"、"ダースkg"]

フレーミングを手伝ってくださいregex。私の質問が明確でない場合は、お気軽にお尋ねください。

フィドル

4

2 に答える 2

5

なぜあなたは使わないのですmatchか?

var text = "1 dozen 3 dozen 4 dozen kg";
var regex = /\d\s\D+/g;
console.log(text.match(regex)); //=> ["1 dozen ", "3 dozen ", "4 dozen kg"]
于 2013-08-03T07:55:00.333 に答える
3

このpositive lookaheadベースの分割呼び出しは、次のように機能します。

var arr = text.split(/\s*(?=\d+)/);

あげる:

["1 dozen", "3 dozen", "4 dozen kg"]

説明:この正規表現を分解します/\s*(?=\d+)/

\s*        - match 0 or more spaces
(?=\d+)    - Make sure previous match is immediately followed by 1 or more digits
\s*(?=\d+) - match 0 or more spaces if it is immediately followed by 1 or more digits

PS:(?=\d+)実際には正の先読みです。

于 2013-08-03T07:56:17.820 に答える