简体   繁体   English

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

[英]regex start and end matching

So I'm having a little regex trouble, I have an expression that matches the starting with and the ending with separately. 因此,我在使用正则表达式时遇到了一些麻烦,我有一个表达式分别匹配以和开头的表达式。 The problem occurs when I try to match the starting with and ending with both in the same expression and I don't understand why that would be a problem. 当我尝试在同一表达式中匹配开头和结尾都出现问题时,我不明白为什么会出现问题。 I've even tried accounting for the content between the start and end tags, still no luck. 我什至试过考虑开始标记和结束标记之间的内容,仍然没有运气。

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

What I'm trying to have it match: 我正在尝试使其匹配:

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

The problem is that you're not matching what's in between the opening and closing tags; 问题在于您不匹配开始标记和结束标记之间的内容; the expression expects either an opening or closing tag to be the only contents of your string. 该表达式期望开始或结束标记是字符串的唯一内容。

To match whatever is between the opening and closing tag you need something like this: 要匹配开始标记和结束标记之间的内容,您需要这样的操作:

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

For this expression to work you can use RegExp.exec() : 为了使该表达式起作用,您可以使用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