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