-2

文字列から2つの値を取得する正規表現をJSで作成しようとしています。

文字列は常に次の形式になりますvalue1[value2]

これを行うための最良の方法は何ですか?

4

4 に答える 4

5
var str = "value1[value2]";
var match = str.match(/([^\[]*)\[([^\]]*)\]/);
// match = ["value1[value2]", "value1", "value2"]

説明

  • ([^\[]*):キャラクターまですべてをキャプチャします[
  • \[[キャラクター。
  • ([^\]]*):キャラクターまですべてをキャプチャします]
  • \]]キャラクター。
于 2012-06-13T18:50:13.570 に答える
0
var str = "value1[value2]";
var arr = str.split('[');

var value1 = arr[0];
var value2 = arr[1].substr(0, arr[1].length -1);
于 2012-06-13T18:53:13.880 に答える
0
function getValues(str) {
  var m = (''+str).match(/^(.*?)\[(.*?)\]$/);
  return (m) ? [m[1], m[2]] : null;
}
getValues('value1[value2]'); // => ["value1", "value2"]
getValues('foobar'); // => null

もちろん、入力がすでに検証されていることが確実な場合は、インデックスごとに値を抽出するだけで済みます。これが最速です。

function getValues2(str) {
  var idx = str.indexOf('[');
  return [str.substr(0, idx), str.substr(idx+1, str.length-idx-2)];
}
于 2012-06-13T18:53:21.073 に答える
0

最も読みやすい正規表現は、次のようなものになると思います。

str.match(/(.+?)([?)(.+?)(]?)/)

興味のある結果を返すだけです。Alexanderの答えは確かに機能しますが、個人的には、角かっこやスラッシュを過度に使用すると非常に読みづらくなります。

于 2012-06-13T18:55:54.073 に答える