regexpu 核心

常规 是源代码转写器,能够使用JavaScript-today(ES5)中的ES2015 Unicode正则表达式.
regexpu 核心 包含 常规其核心功能,即:. rewritePattern(pattern, flag),可以重写正则表达式,从而使用 eS-2015号协定 u 旗帜 成为等同的ES5相容正则表达式模式.
安装
用于 regexpu 核心 在方案上,通过 无数字 :
npm install regexpu-core --save
接下来, require 内容:
const rewritePattern = require('regexpu-core');
API 密码
此模块导出一个命名的函数 rewritePattern。 。 。 .
rewritePattern(pattern, flags, options)
此函数取一个代表正则表达式图案的字符串以及代表其旗帜的字符串,并返回一个ES5相容的图案版本.
rewritePattern('foo.bar', 'u', { unicodeFlag: "transform" });
// → 'foo(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])bar'
rewritePattern('[\\u{1D306}-\\u{1D308}a-z]', 'u', { unicodeFlag: "transform" });
// → '(?:[a-z]|\\uD834[\\uDF06-\\uDF08])'
rewritePattern('[\\u{1D306}-\\u{1D308}a-z]', 'ui', { unicodeFlag: "transform" });
// → '(?:[a-z\\u017F\\u212A]|\\uD834[\\uDF06-\\uDF08])'
regexpu 核心 也可以重写非 ES6 正则表达式, 用于显示其行为一旦发生改变 u 财务报告和审定财务报表 i 添加了旗帜 :
// In ES5, the dot operator only matches BMP symbols:
rewritePattern('foo.bar', '', { unicodeFlag: "transform" });
// → 'foo.bar'
// But with the ES2015 `u` flag, it matches astral symbols too:
rewritePattern('foo.bar', 'u', { unicodeFlag: "transform" });
// → 'foo(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])bar'
可选 options 参数确认以下属性:
稳定正则表达式特性
这些选项可设定为 false 或者说 'transform'时 'transform',对应的功能被编译为可以运行在更古老浏览器中的更古老的语法. 使用时 false (默认),它们没有被编译,可以依靠它们来编译更现代的特性.
-
unicodeFlag- 那个u旗下,允许支持窗体中的 Unicode 代码点越出\u{...}。 。 。 .rewritePattern('\\u{ab}', '', { unicodeFlag: 'transform' }); // → '\\u{ab}' rewritePattern('\\u{ab}', 'u', { unicodeFlag: 'transform' }); // → '\\xAB' -
dotAllFlag- 那个s(单位:千美元)dotAll() 旗帜。 。 。 .rewritePattern('.', '', { dotAllFlag: 'transform' }); // → '.' rewritePattern('.', 's', { dotAllFlag: 'transform' }); // → '[^]' rewritePattern('.', 'su', { dotAllFlag: 'transform' }); // → '[^]' -
unicodePropertyEscapes- 说吧 Unicode 属性逃脱。 。 。 .默认情况下,它们被编译为表单的 Unicode 代码点越出
\u{...}如果unicodeFlag选项设定为'transform'它们往往导致更大的产出,尽管有这种情况(例如:\p{Lu}在哪里实际 减少 输出大小.rewritePattern('\\p{Script_Extensions=Anatolian_Hieroglyphs}', 'u', { unicodePropertyEscapes: 'transform' }); // → '[\\u{14400}-\\u{14646}]' rewritePattern('\\p{Script_Extensions=Anatolian_Hieroglyphs}', 'u', { unicodeFlag: 'transform', unicodePropertyEscapes: 'transform' }); // → '(?:\\uD811[\\uDC00-\\uDE46])' -
namedGroups- 说吧 命名的捕获组。 。 。 .rewritePattern('(?<name>.)\\k<name>', '', { namedGroups: 'transform' }); // → '(.)\1' -
unicodeSetsFlag- 说吧 这个v(单位:千美元)unicodeSets() 旗帜rewritePattern('[\\p{Emoji}&&\\p{ASCII}]', 'v', { unicodeSetsFlag: 'transform' }); // → '[#\\*0-9]'默认情况下,带有
v旗帜被转换成图案u旗帜。 如果你想降低他们,你可以设置unicodeFlag: 'transform'选项.rewritePattern('[^[a-h]&&[f-z]]', 'v', { unicodeSetsFlag: 'transform' }); // → '[^f-h]' (to be used with /u)rewritePattern('[^[a-h]&&[f-z]]', 'v', { unicodeSetsFlag: 'transform', unicodeFlag: 'transform' }); // → '(?:[\0-ei-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])' (to be used without /u) -
modifiers- 说吧 内入i编号 :m编号 :s修改rewritePattern('(?i:[a-z])[a-z]', '', { modifiers: 'transform' }); // → '(?:[A-Za-z])[a-z]'
实验正则表达式特性
这些选项可设定为 false, (中文(简体) ), 'parse' 财务报告和审定财务报表 'transform'时 'transform',对应的功能被编译为可以运行在更古老浏览器中的更古老的语法. 使用时 'parse',它们被解析,并留在输出模式中。 使用时 false (默认),如果使用,它们会导致语法错误.
一旦这些特征变得稳定(当建议被接受为ECMAScript的一部分时),将按默认情况加以分析,从而 'parse' {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}会表现得像 false。 。 。 .
杂项选项
-
onNamedGroup此选项是一个在找到一个命名的捕获组时被调用的函数 。 它得到两个参数: 组合的名称,及其索引.
rewritePattern('(?<name>.)\\k<name>', '', { onNamedGroup(name, index) { console.log(name, index); // → 'name', 1 } }); -
onNewFlags此选项是一个函数, 它被调用来传递必须用来解释所产生的图案的旗帜 .
rewritePattern('abc', 'um', '', { unicodeFlag: 'transform', onNewFlags(flags) { console.log(flags); // → 'm' } })
洞穴
- 看后面的断言 无法转换为旧语法 .
- 使用时
namedGroups: 'transform', (中文(简体) ), regexpu 核心 只有照顾 语法: 您仍需要运行时的包装器来覆盖正则表达式.groups财产RegExp.prototype.match()'结果. 使用时 regexpu 核心 通过Babel,它自动处理.
维护者
如何发布新版
-
打开
main分支,将版本编号打入package.json数字 :npm version patch -m 'Release v%s'改为
patch,使用时minor或者说major视需要。 。 。 .注意这会产生 Git 承诺 + 标记 .
-
按下释放承诺并标记 :
git push --follow-tags然后我们的CI会自动将新版发布到npm.
-
一旦发布到 npm, 更新
regexpu利用它,和 剪切新发布regexpu还有。 。 。 .
作者
| 马蒂亚斯·拜恩斯 |
许可证
regexpu 核心 可在 麻省理工学院 执照.