正则表达式Javascript获取以下值:value1 [value2]

时间:2012-06-13 18:47:42

标签: javascript regex

我希望在JS中创建一个从字符串中获取2个值的注册表:

字符串始终采用以下格式value1[value2]

这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:5)

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

<强>解释

  • ([^\[]*):捕获所有内容,直到[字符。
  • \[[字符。
  • ([^\]]*):捕获所有内容,直到]字符。
  • \]]字符。

答案 1 :(得分:0)

var str = "value1[value2]";
var arr = str.split('[');

var value1 = arr[0];
var value2 = arr[1].substr(0, arr[1].length -1);

答案 2 :(得分: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)];
}

答案 3 :(得分:0)

我认为最可读的正则表达式将是:

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

简单地返回你感兴趣的结果。亚历山大的答案肯定会有用,但我个人觉得过多使用括号和斜线很难阅读。