Javascript 如何在光标位置之前读取编辑器文本以匹配特定单词?

Javascript 如何在光标位置之前读取编辑器文本以匹配特定单词?,javascript,Javascript,我试图检测光标何时在特定字符串之后立即移动到某处。。。我只能这样做,因为我有一个字符串,但当我有多个字符串时,我无法匹配。。。如果我有一个字符串,比如:“color:”,那么匹配单词的代码是: <!-- Create a simple CodeMirror instance --> <link rel="stylesheet" href="lib/codemirror.css"> <script src="lib/codemirror.js"></scr

我试图检测光标何时在特定字符串之后立即移动到某处。。。我只能这样做,因为我有一个字符串,但当我有多个字符串时,我无法匹配。。。如果我有一个字符串,比如:“color:”,那么匹配单词的代码是:

<!-- Create a simple CodeMirror instance -->
<link rel="stylesheet" href="lib/codemirror.css">
<script src="lib/codemirror.js"></script>
<textarea id="myTextarea"></textarea>
<script>

  var editor = CodeMirror.fromTextArea(myTextarea, {
    lineNumbers: true
  });

  //Catch cursor change event
  editor.on('cursorActivity',function(e){
    var line = e.doc.getCursor().line,   //Cursor line
        ch = e.doc.getCursor().ch,       //Cursor character
        stringToMatch = "color:",
        n = stringToMatch.length,
        stringToTest = e.doc.getLine(line).substr(Math.max(ch - n,0),n);

    if (stringToTest == stringToMatch) console.log("SUCCESS!!!");
  });

</script>

变量编辑器=CodeMirror.fromTextArea(myTextarea{
行号:对
});
//捕捉光标更改事件
编辑器.on('cursorActivity',函数(e){
var line=e.doc.getCursor().line,//光标行
ch=e.doc.getCursor().ch,//光标字符
stringToMatch=“颜色:”,
n=stringToMatch.length,
stringToTest=e.doc.getLine(line).substr(Math.max(ch-n,0),n);
if(stringToTest==stringToMatch)console.log(“SUCCESS!!!”);
});
但是当我有一个字符串数组,比如(var数组=[“一”,“三”,“五]),我想匹配这个数组中的任何单词,我就不能这样做。。。所以任何人都可以帮助我,我尝试了很多,但失败了


注意:上面的代码来自:

您可以使用正则表达式来匹配以下几个单词中的一个:

var line = e.doc.getCursor().line,   //Cursor line
    ch = e.doc.getCursor().ch,       //Cursor character
    // Select all characters before cursor
    stringToTest = e.doc.getLine(line).substr(0, ch), 
    // Array with search words: escape characters for use in regular expression:
    array=["one","three","five"].map( s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') );

// Join words with OR (|) and require they match just before the cursor 
// (i.e. at end of string: $)
if (stringToTest.match(new RegExp('('+array.join('|')+')$'))) console.log("SUCCESS!!!");
以下是一个工作片段:

var editor=code镜像.fromTextArea(myTextarea{
行号:对
});
//捕捉光标更改事件
编辑器.on('cursorActivity',函数(e){
var line=e.doc.getCursor().line,//光标行
ch=e.doc.getCursor().ch,//光标字符
//选择光标前的所有字符
stringToTest=e.doc.getLine(line).substr(0,ch),
//带搜索词的数组:用于正则表达式的转义字符:
数组=[“一”、“三”、“五”]
.map(s=>s.replace(/[-\/\^$*+?。()|[\]{}]/g,\\$&');
//连接单词并要求它们在光标前匹配
//(即字符串末尾:$)
if(stringToTest.match(新的RegExp(“(“+array.join(“|”)+”)$))
console.log(“SUCCESS!!!”);
});

谢谢你的帮助我想要的是@trincot