javascript - Unicode 正则表达式 \p{L} 在 NodeJS 中不起作用
问题描述
我正在尝试使以下 unicode 正则表达式在 nodejs 中工作,但我得到的只是一个无效的转义错误。我不知道在这里要逃避什么,或者如果由于某种原因这在 node.js 中根本不起作用。这是我原来的正则表达式:
/([\p{L}|\-]+)/ug
如果我转义 \p like \\p
,则正则表达式不再起作用(仅输出 p、L 和 -)
这在 chrome 中有效,所以它也应该在节点中以某种方式工作,对吧?谢谢你的帮助。
var str = "thÛs Ís spå-rtÅ!";
console.log(str.match(/([\p{L}|\-]+)/ug))
解决方案
快速浏览 nodejs 变更日志发现了这个 PR:
https://github.com/nodejs/node/pull/19052
其中最值得注意的是:
RegExp Unicode 属性转义处于第 4 阶段,将包含在 ES2018 中。它们从 V8 6.4 开始可用,没有标志,因此它们将在 Node.js v10 中取消标志。它们也可以在 Node.js v6-v9 中的 --harmony_regexp_property 标志和 Node.js v8-v9 中的 --harmony 标志下使用。
因此,从外观上看,如果您在节点 v6-v9 上,您可以通过运行node
标志来启用此功能。例如,这适用于节点 v8.11.3:
node --harmony regex-test.js
(其中regex-test.js
包含您的示例代码)。在没有标志的情况下运行它会产生Invalid escape
错误。
如果您可以将节点版本更新到 v10+,则不需要标记。
推荐阅读
- java - 如何将jsp文件转换为.xlsx格式的excel文件
- powershell - 以编程方式在类中设置公共属性
- azure - Azure DevOps git checkout 使用 powershell
- r - R中的Tabulizer包:如何在特定标题后抓取表格
- arrays - 无法在我的 pipe.ts 中使用 value.sort 函数
- arrays - 如何在linux中使用带有多个变量的for循环
- python - 我正在尝试使用 Python 打开一个程序。第二个 arg 需要删除引号
- c# - 无法导航到 RowSelect 上的 ViewController
- javascript - 为什么 post-command 仅适用于以下警报?
- wpf - Wpf 在“ZoomBorder”上拖动和移动图像