javascript - ace 编辑器非捕获组问题(?:)

标签 javascript regex editor ace-editor regex-lookarounds

全部,

我正在尝试使用 ACE 编辑器创建我自己的模式。我正在尝试定义一个非常简单的语法突出显示规则:

this.$rules = {
    "start": [
        {
            token : "string", 
            regex : /(?:CONSUME)(MATCH)/,
        }
    ]
};

根据在线 Javascript 正则表达式测试程序,正则表达式/(?:CONSUME)(MATCH)/应该看到 CONSUMEMATCH 并仅返回 MATCH。然而,ACE 用这条规则突出显示了 CONSUMEMATCH 的所有内容。

将以下代码插入 Ace Mode Creator (http://ace.c9.io/tool/mode_creator.html) 中亲自查看。

(在下拉菜单中,我选择了 Javascript 模式和 XCode 主题。CONSUMEMATCH 是我的测试文本,以下代码是模式面板的内容。)

define(function(require, exports, module) {
"use strict";

var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;

var myHighlightRules = function() {

    this.$rules = {
        "start": [
            {
                token : "string", 
                regex : /(?:CONSUME)(MATCH)/,
            }
        ]
    };
};

oop.inherits(myHighlightRules, TextHighlightRules);
exports.myHighlightRules = myHighlightRules;
});

最佳答案

由于 js 正则表达式不提供确定字符串中匹配组位置的方法,因此 Ace 仅支持包含所有匹配或所有非匹配组的正则表达式。尝试使用

{
    token : ["text", "string"], 
    regex : /(CONSUME)(MATCH)/,
}

相反。

关于javascript - ace 编辑器非捕获组问题(?:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213824/

相关文章:

c - 如何允许用户在终端的单独应用程序中编辑数据?

javascript - 极简原型(prototype)(js框架)

javascript - 在同一页面通过 Javascript 函数加载 Applet

javascript - 用 span 包裹每个字符,但保持 HTML 格式

javascript - 在 CKEditor 中保留 SCRIPT 标签(以及更多)

php - 安全的所见即所得选项

php - jQuery 不传递函数

javascript - Prop ('disabled' ,假);不管用

用于相似性检查的 PHP 正则表达式

Javascript 图像编辑器库