2

これは非常にうるさい質問になると思いますが、残念ながら、それは不可能だと感じています。

状況

特定の単語やフレーズをハイライト (CSS 効果) するテキストエリアが必要です。以前は、これを editarea で動作させていましたが、これはデッド プロジェクトであるため、ますます多くの問題が発生したため、別の最新のエディターである 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 を機能させるためのアイデアや、ライブ編集で単語やフレーズをハイライト表示するためのより簡単な方法はありますか?

4

1 に答える 1

4

keywordMapper に渡す正規表現は、スペース文字と一致しません。

使用する

this.$rules = {
    "start" : [
    {
        token : "highlightWords",
        regex : "word1|word2|word3|phrase one|phrase number two|etc"
    }]
}
于 2013-10-20T06:39:00.800 に答える