javascript - 当存在多个标签时获取标签之间的字符串

标签 javascript regex

只是想弄清楚这个问题,因为正则表达式离我的强项还很远:( 基本上我正在尝试获取 bbcode 标签之间的值:这可能看起来像以下之一:

[center]text[/center]
[left][center]text[/center][/left]
[right][left][center]text[/center][/left][/right]

目前有这个可怕的 if else 代码块来防止它像上面的 third 选项一样变大。

   if (/\[left\]|\[\/left\]/.test(text[2])) {

        // set the value in the [left][/left] tags
        text[2] = text[2].match(/\[left\](.*?)\[\/left\]/)[1];
    } else if (/\[right\]|\[\/right\]/.test(text[2])) {

        // set value in the [right][/right] tags
        text[2] = text[2].match(/\[right\](.*?)\[\/right\]/)[1];
    } else if (/\[center\]|\[\/center\]/.test(text[2])) {

        // set value in the [right][/right] tags
        text[2] = text[2].match(/\[center\](.*?)\[\/center\]/)[1];
    }

我想做的是将它缩短为单个正则表达式以从上面的示例中获取值 text,我已经简化为这样的表达式:

/\[(?:center|left|right)\](.*?)\[\/(?:center|left|right)\]/

但正如您在这个 RegExr demo 中看到的那样,它不符合我的需要。

我怎样才能做到这一点?

注意事项

它应该只匹配 left|right|center 因为所选文本还可以有各种其他 bbcode 标签。

如果字符串看起来像这样:

[center][left][img]/link/to/img.png[/img][/left][/center]

我想获取 left|center|right 标签之间的内容,在本例中为:

[img]/link/to/img.png[/img]

更多例子:

[center][url=lintosomething.com]LINK TEXT[/url][/center]

应该只得到:[url=lintosomething.com]LINK TEXT[/url]

或者

[center]egibibskdfbgfdkfbg sd fgkgb fkgbgk fhwo3g regbiurb geir so go to [url=lintosomething.com]LINK TEXT[/url] and ibgri gbenkenbieurgnerougnerogrnreog erngo[/center]

想要:

egibibskdfbgfdkfbg sd fgkgb fkgbgk fhwo3g regbiurb geir so go to [url=lintosomething.com]LINK TEXT[/url] and ibgri gbenkenbieurgnerougnerogrnreog erngo

最佳答案

编辑:好的,我认为这符合您的需求。

我的正则表达式:

/[^\]\[]*\[(\w+)[=\.\"\w]*\][^\]]+\[\/\1\][^\]\[]*/g

解释:

  1. 匹配 0 个或多个不属于 [ 或 ] 的字符
  2. 匹配单个 [
  3. 匹配 1 个或多个字母字符,稍后我们将使用它作为反向引用
  4. 匹配 0 个或多个 = 。 "或字母字符
  5. 匹配单个 ]
  6. 匹配 1 个或多个非 [ 字符
  7. 匹配单个 [
  8. 匹配单个/
  9. 匹配与步骤 3 相同的字符。(我们的反向引用)
  10. 匹配单个 ]
  11. 匹配 0 个或多个不属于 [ 或 ] 的字符

但是我想声明,如果您要解析 bbcode,您几乎肯定只使用 bbparser 会更好。

关于javascript - 当存在多个标签时获取标签之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24196471/

相关文章:

javascript - 将 google 放置 pac-container inside div?

javascript - Datejs 获取一周中的一串天

javascript - 无法使 JSON 解析和评估在 JavaScript 中工作

java - 将所有出现的单词替换为另一个单词

javascript - Angular 数据表,配置行单击事件时无法单击行按钮

javascript - 使用字符串变量作为正则表达式

Python Pandas 和正则表达式使用字典替换 Dataframe 中的项目

regex - emacs 正则表达式未按预期匹配

mysql - 存储过程和单元测试

javascript - 可以用 JQuery 缩短这个 Javascript 吗?