ansi-regex
匹配正则表达式 ANSI转义码
安装
npm install ansi-regex
用法
import ansiRegex from 'ansi-regex';
ansiRegex().test('\u001B[4mcake\u001B[0m');
//=> true
ansiRegex().test('cake');
//=> false
'\u001B[4mcake\u001B[0m'.match(ansiRegex());
//=> ['\u001B[4m', '\u001B[0m']
'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
//=> ['\u001B[4m']
'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
API
ansiRegex(选项?)
返回匹配ANSI转义码的正则表达式。
选项
类型: object
onlyFirst
类型: boolean
默认值: false (匹配字符串中的任何ANSI转义码)
只匹配第一个ANSI转义。
重要的
如果在服务器上下文中针对不受信任的用户输入运行正则表达式,则应该 给它一个时间。
我不认为 重做 此包的有效漏洞。
常见问题解答
为什么要测试不符合ECMA 48标准的代码?
我们作为测试运行的一些代码是我们在寻找各种非标准或制造商特定代码列表时获得的代码。我们对标准代码和非标准代码都进行了测试,因为它们大多数都遵循相同或类似的格式,并且可以安全地在字符串中进行匹配,而不会有删除实际字符串内容的风险。有一些不遵循传统格式的非标准控制代码(例如: 它们以数字结尾),从而迫使我们将它们排除在测试之外,因为我们无法可靠地匹配它们。
从历史的角度来看,这些ECMA标准是在90年代初建立的,而VT100则是在70年代中后期设计的。在那个时候,控制代码仍然是相当不受控制的,工程师们将它们用于许多事情,即激活可能已经专有的硬件端口。 在其他地方,你可以看到类似的“混乱”代码出现在x86处理器架构中;在某些品牌的处理器上有大量的“中断”,它们可能意味着不同的东西,其中大多数已经被淘汰了。