gpt4 book ai didi

javascript - 如何为(-)创建正则表达式,在 formik setfieldvalue 中的 3 位数字后不重复

转载 作者:行者123 更新时间:2023-12-05 05:49:19 26 4
gpt4 key购买 nike

我有这样的正则表达式函数:

const format = (value) => {
if (typeof value === 'string') {
return value.replace(/(\d{3})(\d+)/g, '$1-$2');
}
}

当我在没有输入 formik setfieldvalue 的情况下进行控制台时,它会生成正确的正则表达式,如 111-1111111:

const custom = (value) => {
console.log('valuemain',format(value)); //this valuemain: 111-1111111
formikRef.current.setFieldValue('customnumb',value)
}

但是当我将正则表达式输入到 formik setfieldvalue 中时,它变成了 111-111-111:

const custom = (value) => {
console.log('valuemain',format(value)); //this valuemain: 111-111-111
formikRef.current.setFieldValue('customnumb',format(value))
}

最佳答案

预先将所有出现的连字符 "-" 替换为 ""(空字符串)

const format = (val = "") => val.replace(/-/g, "").replace(/(\d{3})(\d+)/g, '$1-$2');

console.log(format("1111111111")); // "111-1111111"
console.log(format("111-1111111")); // "111-1111111"
console.log(format("111-11-1-1-1-11")); // "111-1111111"

显然您只对整数感兴趣;为了在政治上更正确,而不是只替换连字符 "-" 你可以替换(使用 RegExp \D Not a Digit)——一切那是不是数字:

const format = (val = "") => {
// @TODO: do val checks if needed here.
return val
.replace(/\D/g, "") // Remove everything that is not a digit
.replace(/(\d{3})(\d+)/g, '$1-$2'); // Format as desired
};

console.log(format("1111111111")); // "111-1111111"
console.log(format("111-1111111")); // "111-1111111"
console.log(format("111-11-1-1-1-11")); // "111-1111111"

关于javascript - 如何为(-)创建正则表达式,在 formik setfieldvalue 中的 3 位数字后不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70674145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com