【发布时间】:2013-08-21 10:26:19
【问题描述】:
我正在编写一个 BBCode 风格的编辑器 - 我有充分的理由这样做,而不是使用现成的工作。我已经让它大部分工作正常,但我需要测试一种情况。考虑以下标记
[para=2]
abc
[/para]
[para=0]
123
[/pa|ra]
上面的管道字符不是您稍后会看到的拼写错误 - 我将其用作占位符。
现在想象下一个用户操作是插入 - 我的版本 - 粗体 markdown 标签 [bold][/bold]。无论用户是否已经选择了一些现有文本,我的代码都可以处理这个问题——例如abc。
不过,看看以下几种情况
- abc selected - 转换产生 [bold]abc[/bold]
- 在 abc 的 c 之后的插入符号 - 转换产生 abc[bold][/bold]
- 管道上的插入符号,|,最后一个字符 [/para]
目前我的代码很乐意执行并返回 [pa|[bold][/bold]ra]。
显然,我需要做的是确定用户的选择或当前插入符号位置不完全位于我的降价标签之一内(我已经有代码检查选择不与降价标签重叠。
我需要按照“环顾四周”选择开始和结束位置的方式做一些事情,以检测该位置是否在降价标签内。
也许解决方案 - 正如“环视”一词所暗示的那样 - 在 RegEx 中。但是,我的正则表达式技能非常基础,因此我非常感谢任何帮助。
【问题讨论】:
-
到那时,您是否检查过您的标记是否有效?在这种情况下,在下一个
[之前检查是否有]就足够了。 -
我最终按照你的建议做了
-
那我会回答的。
标签: javascript regex lookaround