【发布时间】:2016-02-09 10:01:40
【问题描述】:
我正在使用 ACE Editor 来语法高亮我网站的 BBCode 系统,总的来说它运行良好。唯一不一样的是我们相当于多行 cmets:
[nobbcode]
I am a demo of [b]BBCode[/b].
Anything in here is shown as plain text, with code left intact,
allowing people to show how it works.
[/nobbcode]
这个规则是:
{
token:[
"meta.tag.punctuation.tag-open.xml",
"meta.tag.tag-name.xml",
"meta.tag.punctuation.tag-close.xml",
"comment",
"meta.tag.punctuation.end-tag-open.xml",
"meta.tag.tag-name.xml",
"meta.tag.punctuation.tag-close.xml"
],
regex:/(\[)(nobbcode)(\])([\s\S]*?)(\[\/)(nobbcode)(\])/,
caseInsensitive:true
},
在这样的例子中效果很好:
You can use [nobbcode][b]...[/b][/nobbcode] to designate bold text.
匹配在单行上,但它似乎不喜欢多行文本。
ACE 不支持多行正则表达式,如果支持,我应该将其分解为“开始评论、评论、结束评论”部分吗?
【问题讨论】:
-
也许你已经看过这个2014 google group discussion,但是,以防万一......
-
啊,所以是逐行的?这是有道理的。我发现官方文档有时很难理解......如果确实如此,那么在这里实现状态的最简单方法是什么?例如,使用 push/pop 或单独的状态?
-
我会使用一些
isMultiLineComment来表示我认为的状态...
标签: javascript regex ace-editor