-2

我希望在 JS 中创建一个 reg ex,它从字符串中获取 2 个值:

该字符串始终采用以下格式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(/(.+?)([?)(.+?)(]?)/)

简单地返回您感兴趣的结果。亚历山大的回答肯定会奏效,但我个人发现过度使用括号和斜线很难阅读。

于 2012-06-13T18:55:54.073 回答