怕这将是一个非常挑剔的问题 - 我有一种感觉这是不可能的。
情况
我需要有一个文本区域,突出显示某些单词和短语(一些 css 效果)。以前我已经使用 editarea 工作了 - 但是由于它是一个死项目,出现了越来越多的问题,所以我正在尝试另一个更最新的编辑器 - Ace。
问题
我目前有 ace 使用自定义模式很好地突出显示单个单词集,但是与正则表达式匹配的短语已被证明超出了我(到目前为止)。
相关的模式代码 - 如下所示:
var highlightWords = "word1|word2|word3|phrase one|phrase number two|etc";
var keywordMapper = this.createKeywordMapper({
"highlightWords": highlightWords
}, "identifier", true);
this.$rules = {
"start" : [
{
token : keywordMapper,
regex : "[a-zA-Z0-9_$][a-zA-Z0-9_$]*\b"
},{
token : "text",
regex : "\s+"
}]
我尝试匹配 2 个单词短语如下(没有奏效)(还尝试通过添加带有 {2} 的复制品等来匹配更长的条目)
regex : "[a-zA-Z0-9_$][a-zA-Z0-9_$]*(?:\s[a-zA-Z0-9_$][a-zA-Z0-9_$]*){1}\b"
有人有任何想法可以让 ace 工作 - 或者任何更简单的实时编辑单词和短语突出显示的替代方案?
您传递给关键字映射器的正则表达式与空格字符不匹配。
用
this.$rules = {
"start" : [
{
token : "highlightWords",
regex : "word1|word2|word3|phrase one|phrase number two|etc"
}]
}