繁体   English   中英

奇怪的结果还是我错了?

[英]Strange result or am I wrong?

我有以下字符串[row element="div"]This is a row[/row] ,我喜欢从这个字符串中提取div属性和字符串This is a row使用JavaScript和Regex。

我尝试执行此操作的方式如下:

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM