繁体   English   中英

正则表达式开始和结束匹配

[英]regex start and end matching

因此,我在使用正则表达式时遇到了一些麻烦,我有一个表达式分别匹配以和开头的表达式。 当我尝试在同一表达式中匹配开头和结尾都出现问题时,我不明白为什么会出现问题。 我什至试过考虑开始标记和结束标记之间的内容,仍然没有运气。

Works: /^([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?/ig
Works: /([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?$/ig
Doesn't work: /^([ ])?\[(\/?)gaiarch(=[^"]*)?]([ ])?$/ig

我正在尝试使其匹配:

[gaiarch=slider]
[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/trade_c.png" text="Trading Image" goto="http://www.gaiaonline.com/gaia/bank.php?mode=trade&uid=15388423"],[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/friend_c.png" text="Friends Image" goto="http://www.gaiaonline.com/friends/add/15388423"][/gaiarch]

 [gaiarch=slider][img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/gaiaonline/thread/post/dark-center_bottom_zps419960f4.gif" text="bottom bar"]
[img url="http://i1251.photobucket.com/albums/hh543/Knight-Yoshi/gaiaonline/thread/post/star-say_right_zpsdc3769f3.png" goto="http://www.gaiaonline.com/"][/gaiarch] 

问题在于您不匹配开始标记和结束标记之间的内容; 该表达式期望开始或结束标记是字符串的唯一内容。

要匹配开始标记和结束标记之间的内容,您需要这样的操作:

/\[gaiarch(?:=([^\]]+))?\](.*?)\[\/gaiarch\]/ig

为了使该表达式起作用,您可以使用RegExp.exec()

var re = /\[gaiarch(?:=([^\]]+))?\](.*?)\[\/gaiarch\]/ig;
while ((match = re.exec(str)) !== null) {
    console.log(match[1]) // "slider"
    console.log(match[2]) // "[img url=...]"
}

暂无
暂无

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

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