javascript - 根据数据动态屏蔽输入
问题描述
我有回复,它返回“XXX-XXX”或“XX-XXXX”
const formatUnitCode = (value, format) => {}
所以基本上,我想看到formatUnitCode("123456", "XX-XXX") --> "12-3456"
我不想使用 if else 因为它可能会在未来以 XX-XX-XX 的形式出现
有人可以帮我创建这个功能吗?
我尝试使用正则表达式,但我认为不可能传递变量而不是 {2} 和 {4}
const formatCode = (val) => val.replace(/(\d{2})(\d{4})/g, "$1-$2");
解决方案
无论使用什么字母,这都适用于任何掩码(您可以通过更改匹配器正则表达式来控制该行为)。就个人而言,我认为这是一种比仅仅尝试将给定的掩码与正则表达式匹配更灵活的方法。
const replaceWithFiller = (filler, str, matcher = /[a-zA-z]/g) => {
const arr = filler.split('');
return str.replace(matcher, () => arr.shift());
};
console.log(replaceWithFiller('123456', 'XXX-XXX')); //"123-456"
console.log(replaceWithFiller('123456', 'XX-XX-XX')); // "12-34-56"
console.log(replaceWithFiller('123456', 'XX-XXXX')); //"12-3456"
console.log(replaceWithFiller('123456', 'aa-aaaa')); // also "12-3456"
推荐阅读
- javascript - 单击按钮 [React] 显示数组中的随机字符串
- python - 循环中迭代文本文件的 Python 函数仅适用于第一个文件
- java - 解决java.lang.NoClassDefFoundError?
- protocol-buffers - 在原型中,如何将地图定义为自定义选项
- entity-framework-core - 如何将影子属性添加到自有类型?
- xcode - 如何防止安全区域根据图像视图调整大小?
- json - Swift - 基于 JSON 响应内容的不同输出
- r - 如何为条件所有语句设置误差范围
- c - 使用 OpenSSL 在 X509 证书中设置现有签名
- java - 如何使用 hashmap 值填充 RecyclerView?