【问题标题】:regex start and end matching正则表达式开始和结束匹配
【发布时间】:2015-08-03 16:12:15
【问题描述】:

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

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] 之间的字符串?
  • 如果你想同时获得两者,你可以使用this regex。它使用|(或)运算符。所以它匹配开头的[gaiarch=...] 和结尾的[/gaiarch]。这是你要找的吗?
  • 请插入您想要达到的结果。

标签: javascript regex


【解决方案1】:

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

要匹配开始标签和结束标签之间的任何内容,您需要这样的内容:

/\[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=...]"
}

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 2016-02-06
    • 2019-08-10
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多