使用正则表达式动态格式化字符串

特里斯坦

我有一个试图格式化的日期输入(字符串),所以当我将其发送到数据库时,它的格式正确。我想要的格式是DD-MM-YYYY。
理想情况下,我想在代码到达相关点(即在DD和MM之后)时动态添加“-”。我当前的代码是:

    const formattedDate = date.replace(
      /^(\d{2})(\d{0,2})(\d{0,4})/,
      `$1-$2-$3`,
    );

当我输入数字时,它工作正常,但是当我尝试退格时,它将不会超过第一个“-”。
我知道为什么这样做(每次字符串更改时,我的正则表达式都会添加“-”),但是我无法解决。

const [expiry, setExpiry] = useState<string>();

const formatValue = () => {
      /^(\d{2})(\d{0,2})(\d{0,4})/,
    `$1-$2-$3`,
  );
  setExpiry(formattedDate);
}

<TextInput value={expiry} onChange={formatValue} />

样本输入和输出:

input0 - '2'
output0 - '2'
input1 - '22'
output1 - '22-'
input2 - '220'
output2 - '22-0'
etc

finalInput - '22022022'
finalOutput - '22-02-2022'
dh

请注意,您的onChange也将带有破折号。因此,只需-在应用正则表达式之前删除不需要的内容,并-在设置状态时删除不需要的内容

您的代码的工作副本在这里

像这样

export default function App() {
  const [expiry, setExpiry] = useState();

  const formatValue = e => {
    const val = e.target.value.replace(/-/gi, "");
    const formattedDate = val.replace(/^(\d{2})(\d{0,2})(\d{0,4})/, `$1-$2-$3`);
    setExpiry(formattedDate.replace(/-$|--$/gi, ""));
  };

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <input value={expiry} onChange={formatValue} />
    </div>
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式拆分并重新格式化字符串

来自分类Dev

使用正则表达式在字符串中排列未格式化的段落

来自分类Dev

Java匹配正则表达式然后使用第二个正则表达式格式化字符串

来自分类Dev

Javascript-用正则表达式替换字符串以格式化数字

来自分类Dev

需要帮助格式化字符串文字正则表达式

来自分类Dev

正则表达式读取以下格式化字符串模式

来自分类Dev

如何使用 sed 和正则表达式格式化 ruby 版本字符串?

来自分类Dev

如何格式化正则表达式捕获字符串,以便可以使用String.Format()对其进行格式化?

来自分类Dev

用户可自定义的正则表达式,用于字符串格式化

来自分类Dev

正则表达式re.sub用于python中的字符串格式化

来自分类Dev

与格式化的字母数字字符串中的正则表达式匹配

来自分类Dev

使用正则表达式格式化日期

来自分类Dev

使用正则表达式格式化文本

来自分类Dev

字符串格式/模板/正则表达式

来自分类Dev

特定字符串格式的正则表达式

来自分类Dev

正则表达式以@ ... @ .... @格式替换字符串

来自分类Dev

正则表达式动态字符串操作

来自分类Dev

使用正则表达式删除字符串末尾的不可预测的日期格式

来自分类Dev

如何检查,而不使用正则表达式的字符串格式?

来自分类Dev

如何使用正则表达式解析Javascript中特定格式的字符串?

来自分类Dev

使用正则表达式从字符串获取不同格式的数字

来自分类Dev

如何使用正则表达式从特定格式的字符串中提取键值对?

来自分类Dev

在Scala中使用正则表达式的字符串格式

来自分类Dev

正则表达式:使用JavaScript从字符串中获取数字格式的nnn?

来自分类Dev

使用正则表达式解析多格式字符串

来自分类Dev

使用动态正则表达式匹配字符串中的整个单词

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

使用正则表达式验证字符串

来自分类Dev

使用正则表达式删除字符串

Related 相关文章

  1. 1

    使用正则表达式拆分并重新格式化字符串

  2. 2

    使用正则表达式在字符串中排列未格式化的段落

  3. 3

    Java匹配正则表达式然后使用第二个正则表达式格式化字符串

  4. 4

    Javascript-用正则表达式替换字符串以格式化数字

  5. 5

    需要帮助格式化字符串文字正则表达式

  6. 6

    正则表达式读取以下格式化字符串模式

  7. 7

    如何使用 sed 和正则表达式格式化 ruby 版本字符串?

  8. 8

    如何格式化正则表达式捕获字符串,以便可以使用String.Format()对其进行格式化?

  9. 9

    用户可自定义的正则表达式,用于字符串格式化

  10. 10

    正则表达式re.sub用于python中的字符串格式化

  11. 11

    与格式化的字母数字字符串中的正则表达式匹配

  12. 12

    使用正则表达式格式化日期

  13. 13

    使用正则表达式格式化文本

  14. 14

    字符串格式/模板/正则表达式

  15. 15

    特定字符串格式的正则表达式

  16. 16

    正则表达式以@ ... @ .... @格式替换字符串

  17. 17

    正则表达式动态字符串操作

  18. 18

    使用正则表达式删除字符串末尾的不可预测的日期格式

  19. 19

    如何检查,而不使用正则表达式的字符串格式?

  20. 20

    如何使用正则表达式解析Javascript中特定格式的字符串?

  21. 21

    使用正则表达式从字符串获取不同格式的数字

  22. 22

    如何使用正则表达式从特定格式的字符串中提取键值对?

  23. 23

    在Scala中使用正则表达式的字符串格式

  24. 24

    正则表达式:使用JavaScript从字符串中获取数字格式的nnn?

  25. 25

    使用正则表达式解析多格式字符串

  26. 26

    使用动态正则表达式匹配字符串中的整个单词

  27. 27

    使用正则表达式匹配字符串?

  28. 28

    使用正则表达式验证字符串

  29. 29

    使用正则表达式删除字符串

热门标签

归档