validation - React Native 支持 JavaScript 的标准化功能吗?

标签 validation react-native normalize

我目前正在开发一个 React Native 应用程序,并正在进行一些文件名清理。我注意到某些文件上传因名称中带有重音符号的字符而失败。我开始使用标准化函数删除特殊字符,因为正则表达式本身还不够,但是 Android 似乎不支持该函数。

示例:

sanitizeFileName(fileName) {
    let encodedFileName = fileName || "upload";
    encodedFileName = encodedFileName.normalize('NFD');
    encodedFileName = encodedFileName.replace(/[^a-zA-Z0-9]/g,'_');
    return encodedFileName;
}

这是 android 抛出的错误:

类型错误:未定义不是一个函数(评估'o.normalize('NFD')'

由于某种原因,上述函数在 iOS 上按预期工作。查看 normalize 的文档它说 Node.js 支持它

我想知道也许“NFD”选项不受支持或类似的东西?

上面的函数确实有效,但是如果我删除 normalize 部分...

它还可以在 Debug模式下与规范化函数一起工作

最佳答案

我遇到了同样的问题,它在 Android 上的 Debug模式下可以工作,但在不处于 Debug模式下时停止,这对我来说没什么意义。

我最终使用了unorm .

yarn add unorm

导入模块

import unorm from 'unorm';

然后将 encodedFileName.normalize('NFD') 替换为

unorm.nfd(encodedFileName);

在 Android 和 iOS 上运行良好。我希望它可以帮助其他人。

关于validation - React Native 支持 JavaScript 的标准化功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602427/

相关文章:

react-native - 如何断言 React Native 测试库中的按钮被禁用?

react-native - 在 react native 项目的 gradle 文件夹中找不到包装器/dists

react-native - React Native Animated API - 结合平移和旋转

python - 箭袋 matplotlib : arrow with the same sizes

javascript - 将状态与 props 同步,实现 ReactJS 中表单输入的双向绑定(bind)

angularjs - 在 angularjs 中显示输入验证的弹出窗口

javascript - 为什么当 onsubmit = false 使用外部 javascript 时 Firefox 5 将表单发送到服务器?

laravel - "except"和 "idColumn"在 "unique:table,column,except,idColumn"中指的是什么?来自 Laravel 文档

PHP:规范化不存在目录的路径以防止目录遍历?

asp.net-mvc - ASP.NET MVC 2 中的元数据类型和客户端验证