0

次のような文字列を指定します。

23,234,456 first second third

文字列を 2 つの部分に分割するにはどうすればよいですか。ここで、部分 1 には先頭の数字が含まれ、部分 2 には残りが含まれますが、文字列が数字で始まり、数字がカンマで区切られているかどうかに関係なく可能ですか? つまり、 と の 2 つの結果が必要23,234,456ですfirst second third。その文字列に最初の数値の一部ではない数値がある場合、それは 2 番目の結果にあるはずです。

これまでのところ、最初に番号を取得するための私の最高の刺し傷は、次のようなものです。

^[0-9]+(,[0-9]{3})*

行を開始するコンマ区切りまたは非コンマ区切りの番号を取得するようです。ただし、Javascript コンソールでこれを実行すると、完全な数字だけでなく、最後の 3 桁とその前の,. (例23,234,456および,456)。

残りを別の変数に入れることに関しては、私は問題を抱えています。などで作業してみました\bが、残りの行をつかむための基本的な何かが欠けているに違いないと思います。

問題が発生した場合に備えて、Javascriptでこれを行っています。

何を一致させ、何を一致させないかのその他の例。

2 one two three戻る必要が2あり、one two three

2345 one two three戻る必要が2345あり、one two three

2 one 2 three戻る必要が2あり、one 2 three

2,234 one two 3,000戻る必要が2,234あり、one two 3,000

パート 1 とパート 2 の間のスペースは、パート 2 の冒頭に含めることができます。

4

2 に答える 2

2

最初と残りの両方にキャプチャ グループを使用する必要があります。この正規表現を試してください:

^(\d+(?:,\d+)*)\s+(.*)

グループ 1 はコンマで区切られた数字で、グループ 2 は残りです。\s+ はその間の空白を食べます。(少なくとも 1 つ必要)。

もちろん、正規表現がまったく一致しない場合は、数字またはコンマ区切りの数字のリストで始まり、その後に 1 つ以上の空白文字が続きます。

于 2012-06-27T21:10:05.983 に答える
2

私が大きく間違っていない限りsplit()、最初のスペースで簡単にできます。

に対して文字列をチェックすることもでき/^[0-9,]+ /ます。一致しない場合は、最初から分割をスキップできます。

編集: 残念ながら、JavaScript が文字の最初のインスタンスで分割する簡単な方法を提供するとは思いません。

値を照合し、それらをキャプチャされたグループに入れる正規表現を次に示します。

^(?:([0-9,]+)\s)?(.*)$
于 2012-06-27T21:13:44.477 に答える