我有以下字符串[row element="div"]This is a row[/row]
,我喜欢使用JavaScript和Regex从此字符串中提取div
属性和字符串This is a row
。
我尝试执行此操作的方式如下:
var string = '[row element="div"]This is a row[/row]';
var $d = string.match(/\[row element="([^"]+)"\](.*?)\[\/row\]/g);
console.log($d);
结果是:
[row element="div"]This is a row[/row]
所以,问题是,我做错了,还是代码表现得很奇怪?
如果这是错误的,我如何从string
变量中提取所需的部分?
答案 0 :(得分:1)
问题是/g
和.match
与子图案不兼容。
相反,请尝试相反的方式:
var regex = /......../g;
var $d = regex.exec(string);
console.log($d);
结果应该是一个数组,包含索引0处的整个匹配,第一个子模式为1,第二个子模式为2。
您可以反复调用.exec
以查看是否还有其他[row element="foo"]bar[/row]
模式匹配。如果没有更多匹配,.exec
将返回null
。
答案 1 :(得分:1)
您可以使用:
var $d = string.match(/\[row element="(?:[^"]+)"\](.*?)\[\/row\]/)[1];
//=> "This is a row"