Javascript 正则表达式提取多个值

Javascript 正则表达式提取多个值,javascript,regex,Javascript,Regex,/[.#]\s*([^{\s]*)\s*{/将获取#or.和{之间的文本。 我试图提取#or.和{之间的文本以及{和}之间的文本。我相信这与下面的表达式类似 var productText = '#id {} .class {}'; var m, r = /([.#]\s*([^{\s]*)\s*{)(([^{]*)}/)/g; 您可以使用这个正则表达式获取#和{}之间的部分 注意:我只在Perl中尝试过正则表达式。 对于正则表达式的其余部分,我只简单地放了。*而不是提取相同的内容 Strin

/[.#]\s*([^{\s]*)\s*{/
将获取#or.和{之间的文本。 我试图提取#or.和{之间的文本以及{和}之间的文本。我相信这与下面的表达式类似

var productText = '#id {} .class {}';
var m, r = /([.#]\s*([^{\s]*)\s*{)(([^{]*)}/)/g;

您可以使用这个正则表达式获取#和{}之间的部分

注意:我只在Perl中尝试过正则表达式。 对于正则表达式的其余部分,我只简单地放了。*而不是提取相同的内容


String.split通常更易于用于提取,即使这样,清理辅助程序也很有用:

var productText = '#id {123} .class {456}';
var m, r = /(:?[.#])([\w\W]+?)\s*\{([\w\W]+?)\s*\}/g;

productText.split(r).slice(2,-1).filter(/./.test, /\w/)
// output array: ["id", "123", "class", "456"]

@acheong87表达式使用javascript中的execute方法返回null,但我要寻找的实际表达式与/([。#]\s*([^{\s]*)\s*{)([^{]*}/)/g有点类似。@Jacob问得好。+1不确定这是否适用,但不要让你接受的答案随风摆动——如果s/o否决了他(你认为这是错误的),也帮他投票。
var productText = '#id {123} .class {456}';
var m, r = /(:?[.#])([\w\W]+?)\s*\{([\w\W]+?)\s*\}/g;

productText.split(r).slice(2,-1).filter(/./.test, /\w/)
// output array: ["id", "123", "class", "456"]