簡體   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