0

編集:おそらく、これは Backbone.js ルート用であることに言及する必要がありました。それを分割することはオプションではありません。

次の文字列を使用します。

!/example/c/0/0/0/0

「match()」を使用してスラッシュ間の値を抽出しようとしています。私の問題は、最後の項目 ("/0") が常に文字列に含まれているとは限らないことです。これは私が現在持っているものです:

'!/example/c/0/0/0/0'.match(/^!(\/[A-z0-9\-_]+|)\/c\/([0-9]+)\/([0-9]+)\/([0-9]+/)

これは、example が存在する場合は 'example', '0', '0', '0'、example が存在しない場合は '', '0', '0', '0' の配列を返します...私が見たい結果は次のとおりです。

'example', '0', '0', '0', ''

最後のアイテムが存在しない場合、または:

'example', '0', '0', '0', '0'

それが存在するとき。つまり、基本的には、最後のアイテムの前のスラッシュが私を惹きつけているのです! どんな助けでも大歓迎です。

4

3 に答える 3

3

区切り文字がわかっているので分割をお勧めします。これは簡単です。

var toSplit = "!/example/c/0/0/0/0";
var splitted = toSplit.split('/');
于 2012-07-10T15:15:27.993 に答える
1

値について厳密なチェックが必要ない場合は、次のようにすることができます。

"!/example/c/0/0/0/0".match(/^!\/([^/]+)\/c\/([^/]+)\/([^/]+)\/([^/]+)\/([^/]*)/);

私の知る限り、探している正確な配列を使用する方法がないことに注意してください。配列matchの最初の要素は、「例」ではなく、一致した文字列全体です。

于 2012-07-10T16:11:49.580 に答える
1

関数はおそらくあなたがやろうとしていることには十分でしょうが、.split()あなたが探している正規表現は次のとおりです:

/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/

'!/example/c/0/0/0/'.match(/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/)
["!/example/c/0/0/0/", "example", "0", "0", "0", ""]

'!/example/c/0/0/0/0'.match(/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/)
["!/example/c/0/0/0/0", "example", "0", "0", "0", "0"]

\dは のショートカットで[0-9]、は0 回以上*繰り返すことを意味し、 は 1 回以上繰り返すことを意味します。+

于 2012-07-10T15:36:28.000 に答える