奇怪的结果,或者我错了

Strange result or am I wrong?

本文关键字:或者 我错了 结果      更新时间:2023-09-26

我有以下字符串[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变量中提取所需的部分?

问题是/g.match与子模式不兼容。

相反,尝试另一种方式:

var regex = /......../g;
var $d = regex.exec(string);
console.log($d);

结果应该是一个数组,包含索引0处的整个匹配,第一个子模式为1,第二个子模式为2。

你可以反复调用.exec,看看是否有更多的[row element="foo"]bar[/row]模式匹配。如果没有匹配,.exec将返回null

您可以使用:

var $d = string.match(/'[row element="(?:[^"]+)"'](.*?)'['/row']/)[1];
//=> "This is a row"