[英]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.