javascript - Javascript replace() 在 iPhone 上对长字符串行为不端
问题描述
我似乎无法以正确的方式解释这一点,但String.prototype.replace()
如果属性的值太长(Chrome 和 Safari),则在 iPhone 和 PC 上的行为会有所不同。
我有一个简单的函数,它用{}
匹配的子字符串替换任何封装,该子字符串应该是传递对象的键:
const data = { lang: "en", version: "1.0", user: "marc" };
const rep = (html, data) =>
html.replace(/\{*([\w_\-]+)*\}/g, (match, capture) => data[capture] || "");
const html = '<input type="hidden" name="abcdefghijklmnopqr" value="{lang}">'
上面的代码只有在 name 属性很短的情况下才适用于 iPhone。返回:
<input type="hidden" name="abc" value="en">
<input type="hidden" name="abcdefghijklmnopqr" value="{lang}">
您可以在此处使用您的 iPhone 查看演示: https ://codepen.io/raduchiriac/pen/wQVvRv?editors=0010
编辑:收到下面的答案后,我使用{([\w_\-]+)}
解决方案
推荐阅读
- python - 何时在 python 中使用与 MySQL 的连接池?
- integration - 聊天库登录集成
- java - Java TreeMap:“放置”后的不同对象?
- javascript - 当我将一个空字符串传递给 include("") 时,它是否总是返回 true?
- php - PHP中打印变量这两种方法的区别?
- multithreading - Powershell Invoke-Command 中的多线程
- vba - 更改附加的文本颜色?
- proxy - mitmproxy 配置拦截 HTTPS
- ios - 应用程序必须包含提供的配置文件/配置文件不包含选定的签名证书
- ruby-on-rails - 通过 URL 从 Rails 公共目录中获取文件