帮助正则表达式从括号内提取值

时间:2009-07-26 17:32:40

标签: javascript regex parsing

我想获得一个将提取以下内容的正则表达式。我有一个regexp来验证它(我把它拼凑在一起,所以它可能不是最好的或最有效的。)

some.text_here:[12,34],[56,78]

结肠前部分可包括句号或下划线。冒号后括号内的数字是坐标[x1,y1],[x2,y2] ......我只需要这里的数字。

这是我正在使用的regexp验证器(对于javascript):

^[\w\d\-\_\.]*:(\[\d+,\d+],\[\d+,\d+])

我对regexp相当新,但我无法弄清楚如何提取值以便我可以

name = "some.text_here"
x1 = 12
y1 = 34
x2 = 56
y2 = 78

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以使用字符串的match方法:

var input = "some.text_here:[12,34],[56,78]";

var matches = input.match(/(.*):\[(\d+),(\d+)\],\[(\d+),(\d+)\]/);

var output = {
  name: matches[1],
  x1: matches[2],
  y1: matches[3],
  x2: matches[4],
  y2: matches[5]
}

// Object name=some.text_here x1=12 y1=34 x2=56 y2=78

答案 1 :(得分:1)

你想要这样的东西:

/^(\S+):\[(\d+),(\d+)\],\[(\d+),(\d+)\]/

我不确定JavaScript是否支持caputre组的命名,但如果确实如此,你也可以添加它们。

答案 2 :(得分:1)

试试这个正则表达式:

/^([\w\d-_.]*):\[(\d+),(\d+)],\[(\d+),(\d+)]/

var str = "some.text_here:[12,34],[56,78]";
var match = str.match(/^([\w\d-_.]*):\[(\d+),(\d+)],\[(\d+),(\d+)]/);
alert("name = " + match[1] + "\n" + 
      "x1 = " + match[2] + "\n" +
      "x2 = " + match[3] + "\n" +
      "y1 = " + match[4] + "\n" +
      "y2 = " + match[5]);