3

我有这个字符串

(<<b>>+<<10>>)*<<c>>-(<<x>>+<<y>>) 

使用 JavaScript,将其解析为的最快方法是什么

[b, 10, c, x, y]
4

4 回答 4

5

尝试这个:

'(<<b>>+<<10>>)*<<c>>-(<<x>>+<<y>>)'.match(/[^(<+>)*-]+/g)
于 2013-07-31T11:07:48.960 回答
5

我建议:

"(<<b>>+<<10>>)*<<c>>-(<<x>>+<<y>>)".match(/[a-z0-9]+/g);
// ["b", "10", "c", "x", "y"]

JS 小提琴演示

参考:

于 2013-07-31T11:06:04.330 回答
3

使用正则表达式

var pattern=/[a-zA-Z0-9]+/g
your_string.match(pattern).
于 2013-07-31T11:09:29.280 回答
3
var str = '(<<b>>+<<10>>)*<<c>>-(<<x>>+<<y>>) ';
var arr = str.match(/<<(.*?)>>/g);
// arr will be ['<<b>>', '<<10>>', '<<c>>', '<<x>>', '<<y>>']

arr = arr.map(function (x) { return x.substring(2, x.length - 2); });
// arr will be ['b', '10', 'c', 'x', 'y']

或者您也可以使用exec直接获取捕获组:

var regex = /<<(.*?)>>/g;
var match;
while ((match = regex.exec(str))) {
    console.log(match[1]);
}

此正则表达式的好处是您可以使用字符串中的任何内容,包括其他字母数字字符,而无需自动匹配它们。只有那些标记<< >>匹配。

于 2013-07-31T11:09:40.367 回答