Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中包含jquery终端不工作转义序列的正则表达式_Javascript_Jquery_Regex_Jquery Terminal - Fatal编程技术网

JavaScript中包含jquery终端不工作转义序列的正则表达式

JavaScript中包含jquery终端不工作转义序列的正则表达式,javascript,jquery,regex,jquery-terminal,Javascript,Jquery,Regex,Jquery Terminal,我试图在jQuery终端中执行特殊字符功能。我能够成功地执行退格功能,但在执行转义功能时遇到了一个问题 这是我试图执行的代码。 使用的正则表达式: (^|[^\x08]|\r\n|&[^;]+\x08|[\x1B[K] 输入字符串: Checking current state.\t[ ]\b\b\b\b\b-\r\u001B[KChecking current state.\t[ ]\b\b\b\b\bFAIL\n\r\u001B 预期最终产出: Checking cu

我试图在jQuery终端中执行特殊字符功能。我能够成功地执行退格功能,但在执行转义功能时遇到了一个问题

这是我试图执行的代码。 使用的正则表达式:

(^|[^\x08]|\r\n|&[^;]+\x08|[\x1B[K]
输入字符串:

Checking current state.\t[    ]\b\b\b\b\b-\r\u001B[KChecking current state.\t[    ]\b\b\b\b\bFAIL\n\r\u001B
预期最终产出:

Checking current state.      [FAIL}
这里\x1B[K是特殊字符,我想执行其功能。(\x1B[K=clear line)

这里是解决方案:

$.terminal.defaults.formatters.unshift([
    /(^|[^\x08]|[\r\n]{2}|&[^;]+;)\x08|[^\r\n]+\r\x1B(?:\[|[)K/g, '', {loop: true}
]);
它几乎可以工作,除了最后一个
]
之外,因为正则表达式正在删除
\b
之前的字符,而不移动光标

(?:\[|和#91;)K
是必需的,因为命令行首先接受使用html实体的编码输入,所以不能键入格式

选项是版本1.18.0的新功能,在循环中替换,直到它与正则表达式不匹配为止

var term=$('body').terminal();
$.terminal.Default.formatters.unshift([
/(^ |[^\x08]|[\r\n]{2}和[^;]+)\x08 |[^\r\n]+\r\x1B(?:\[|和#91;)K/g',,{循环:真}
]);
var str='正在检查当前状态。\t[]\b\b\b\b\b-\r\u001B[k正在检查当前状态。\t[]\b\b\b\b\b\bFAIL\n\r\u001B';
term.insert(str).echo(str);

抱歉,不太清楚:是否需要删除以
\x1B[K
开头的行或包含该行的行?如果前者正确,请尝试,但我仍然无法获得您预期的输出。我想在获得此序列的“\u001B[K”时清除整行。(“\u001B[K”这只是“ESC[K”,它的功能是删除行中前面的所有字符。)然后,我仍然不太懂。@domcobb更新的代码在github的devel分支中,我需要修复过度键入功能(字符串,如\x08A或\x08\ux)在应用格式化程序之前,需要在jQuery终端中进行一次更改,\r才能删除。还需要进一步的API更改,以便它可以与命令行一起工作(移动光标是不正确的)。现在它只能与echo一起工作。