Chrome 75 正则表达式,“S”匹配奇怪的 unicode 范围

2024-05-13

我们在最新版本的 Chrome (75) 上有一个奇怪的错误,它取代了S to S

console.log(
  'AZERTYUIOPQSDFGHJKLMWXCVBN'.replace(/[\u00A0-\u9999<>&]/gim, char => `&#${char.charCodeAt(0)};`)
)  

//AZERTYUIOPQ&#83;DFGHJKLMWXCVBN

有人知道代码是问题还是 Chrome 是问题吗?


已修复于 75.0.3770.142。


您发现了一个有趣的错误:

由于某种原因,这两个测试都是正确的,这取决于不相关的字符范围:

> /[\u0178-\u017F]/i.test('s')
true
> /[\u0178-\u017F]/i.test('S')
true

介绍者https://chromium-review.googlesource.com/c/v8/v8/+/1478710 https://chromium-review.googlesource.com/c/v8/v8/+/1478710(四月)。

修复在https://chromium-review.googlesource.com/c/v8/v8/+/1648098 https://chromium-review.googlesource.com/c/v8/v8/+/1648098似乎相关,但带有 v8 7.7.27 的 Canary 77.0.3818.0 仍然表现出这种行为。这是一个单独的错误:https://crbug.com/971636 https://crbug.com/971636

引入该问题的错误(https://bugs.chromium.org/p/v8/issues/detail?id=8348 https://bugs.chromium.org/p/v8/issues/detail?id=8348)讨论 ECMAScript 如何处理i and u不同的是:

  • i独自打电话toUpperCase,它使用案例mapping
  • iu调用 Unicode 大小写folding

它们略有不同(尽管存在此错误)。

我还发现了一个似乎不同的错误:

这是一个小测试用例,尽管 v8 中的修复涉及土耳其语大小写折叠:

> text='ſ';
"ſ"
> new RegExp(text, 'i').test(text.toUpperCase())
true
> new RegExp(text, 'i').test('S')
false

它是在同一版本中引入的,但它并不是完全相同的错误 - 它是specific到 ſ 字符,其大写版本位于 ASCII 范围内,因此会在 V8 的正则表达式编译器中触发不同的代码路径。分别固定在https://chromium-review.googlesource.com/c/v8/v8/+/1827683 https://chromium-review.googlesource.com/c/v8/v8/+/1827683

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 75 正则表达式,“S”匹配奇怪的 unicode 范围 的相关文章

  • 为什么电子邮件正文给出不同的输出?

    我正在尝试触发来自 Google 应用程序脚本的电子邮件 const body HtmlService createHtmlOutput A b new task b have been added to the Task Manager
  • EJS.JS ReferenceError:标题未定义

    我遇到了 Express 脚本的问题 我正在调用一个在另一个函数成功时呈现视图的函数 在这个项目中 我使用 Angular Node Express 和 ejs 作为视图引擎 当我渲染视图时 不幸的是我收到以下 ejs 错误 Referen
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • getFieldValue 或 Formik 中的类似内容

    有没有办法获取 formik 中单击处理程序内字段的值 您可以使用setFieldValue在那里 所以我假设 但在任何地方都找不到 Formik 应该有类似的东西来检索值
  • 非法的break语句(Node.js)

    尝试在 Node js 和 MongoDB 中查找唯一 ID 方法是创建一个 while 循环来查询 MongoDB 中的现有 ID 直到找到唯一值 如果 ID 已被使用 则最后的数字会递增 直到 Mongo 不返回任何内容 一切正常 除了
  • VueJS - 验证表单文件上传中的文件大小要求

    我正在使用 Bootstrap Vue 表单制作一个简单的表单 用户可以在其中上传文件 有没有办法验证使用 Vue 表单选择的文件的大小 我想阻止用户上传此类文件 我见过this https stackoverflow com questi
  • 如何检查 webgl(two.js) 的客户端性能

    我有一个使用 Three JS 的图形项目 现在我想自动检查客户端 GPU 性能并计算可以在应用程序中加载多少元素 我想到了诸如 GPU 基准测试之类的东西 看一眼stats js https github com mrdoob stats
  • tinyMCE - 将RemoveFormat限制为格式列表

    当前的tinyMCE版本 3 5 2 Hi 我正在开发一个自定义插件 可以添加和删除自定义格式 http www tinymce com tryit custom formats php 向当前选择添加格式很简单 但我做不到 找到删除多种格
  • 如何在多行中使用 JavaScript 正则表达式?

    var ss pre aaaa nbbb nccc pre ddd var arr ss match
  • 从 Flow 中的对象值定义联合类型

    我有一个这样的枚举 const Filter ALL ALL COMPLETED COMPLETED UNCOMPLETED UNCOMPLETED 我想做的是声明一个联合类型 如下所示 type FilterType Filter ALL
  • Facebook Instant Game - 上传捆绑的 zip 文件会导致 Web 托管出现 SDK 参考错误

    当我尝试上传简单的游戏 应用程序时 我收到一条错误消息 游戏必须通过我们的 CDN 引用我们支持的 SDK 之一 不过我已经给出了 SDK 参考 难道不是这个吗 我也浏览了 facebook 文档的 SDK 参考 但它对我不起作用 有人以前
  • WordPress ~ 如何在一页上显示多个 Google Chart?

    下面是我插入到 WordPress Visual Composer 中的原始 HTML 块中的一个 Google 图表的代码 图表 ID 名称为 chart div1 这适用于我的 WP 网页
  • 如果是数字,Chrome 会重新排序对象键,这是正常/预期的吗

    我注意到某些评估电子商务网站的某些鞋码并将其输出到屏幕上的代码会打乱 Chrome 中的顺序 给出的 JSON 可以是 7 9149 9139 10455 17208 7 5 9140 9150 10456 17209 8 2684 914
  • 如何使用nodejs获取目录中第一个扩展名为.txt的文件?

    我所有文件所在的目录是 usr home jordan 该目录下有很多文件 在目录本身中 但有一个文件以 txt 扩展名命名 使用nodejs和fs 我想将带有txt扩展名的第一个文件 或任何文件 放入 mytxtfilepath 中 我在
  • 将 SVG 下载为 PNG 图像

    我想将 HTML 页面中的 SVG 元素下载为 PNG 格式 我尝试了此操作 但下载了一个空白的 PNG 图像 如何将我的 HTML SVG 下载为 PNG 我用过这个https bl ocks org biovisualize 81878
  • Img src 路径以及要传递的标头参数

    我在 jsp 页面中有一个 img 标记 其中 src 路径需要传递标头参数才能获取图像 我们怎样才能实现它呢 您现在可以使用fetch https developer mozilla org en US docs Web API Fetc
  • 为什么 iframe 请求不发送 cookie?

    兄弟部门创建了一个 HTML 文件 该文件实际上是少数 iframe 的支架 每个 iframe 都会调用一个托管在 Web 服务器上的报告 其参数略有不同 调用的报告将向未经身份验证的用户显示登录表单 或向已经过身份验证的用户显示报告内容
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前
  • AngularJS 中的全局模拟对象用于 jasmine/karma 测试

    我有一个正在模拟进行单元测试的对象 基本上在我的测试文件中 我将其模拟如下 var mockObject mockMethod1 function return true mockMethod2 function return true b

随机推荐