• 正则表达式,日期选择器时间限制,报错原因


    目录

    一、正则表达式

    1、表达式含义

    2、书写表达式

    二、时间限制

    1、原始日期选择器改造

    2、禁止选择未来时间

    3、从...到...两个日期选择器的时间限制

    三、Uncaught (in promise) Error报错


    一、正则表达式

    1、表达式含义

    (1)/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

    验证电子邮件地址的格式:

    • /^/$/ 是正则表达式的起始和结束符号,表示匹配整个字符串
    • ([a-zA-Z0-9_.-])+ 匹配电子邮件地址的用户名部分,可以由字母、数字、下划线、点号和短横线组成,至少包含一个字符
    • @ 匹配电子邮件地址中的at符号
    • (([a-zA-Z0-9-])+\.)+ 匹配电子邮件地址的域名部分,可以由字母、数字和短横线组成,至少包含一个子域名,且每个子域名之间以点号分隔
    • ([a-zA-Z0-9]{2,4})+ 匹配电子邮件地址的顶级域名部分,可以由字母和数字组成,长度为2到4个字符

    2、书写表达式

    (1)6-10 位自然数

    ^[0-9]{6,10}$

    表达式的含义:

    • 表示匹配字符串的开头
    • [0-9] 表示匹配数字(0-9)
    • {6,10} 表示前面的字符必须出现6-10次
    • $ 表示匹配字符串的结尾

    (2)6-10位自然数或字母

    ^[0-9a-zA-Z]{6,10}$

    表达式的含义:

    • ^ 表示匹配字符串的开头
    • [0-9a-zA-Z] 表示匹配数字(0-9)或字母(大小写不限)
    • {6,10} 表示前面的字符必须出现6-10次
    • $ 表示匹配字符串的结尾

    (3)最多三位小数

    ^[0-9]+(.[0-9]{1,3})?$

    表达式的含义:

    • ^ 表示匹配字符串的开头
    • [0-9]+ 表示匹配一个或多个数字
    • (.[0-9]{1,3})? 表示匹配一个小数点及其后面的1-3位数字,并且整个部分是可选的,可以出现0次或1次
    • $ 表示匹配字符串的结尾

    可以匹配 1、1.2、1.23、1.234,但不匹配 1.2345。


    二、时间限制

    日期选择器改造,将使用element-plus组件库

    官方文档如下:一个 Vue 3 UI 框架 | Element Plusicon-default.png?t=N7T8https://element-plus.org/zh-CN/

    1、原始日期选择器改造

    (1)整理出官方最原始的日期选择器

    1. <script lang="ts" setup>
    2. import { ref } from 'vue'
    3. const size = ref<'default' | 'large' | 'small'>('default')
    4. const value1 = ref('')
    5. script>
    6. <style scoped>
    7. .demo-date-picker {
    8. display: flex;
    9. width: 100%;
    10. padding: 0;
    11. flex-wrap: wrap;
    12. }
    13. .demo-date-picker .block {
    14. padding: 30px 0;
    15. text-align: center;
    16. border-right: solid 1px var(--el-border-color);
    17. flex: 1;
    18. }
    19. .demo-date-picker .block:last-child {
    20. border-right: none;
    21. }
    22. .demo-date-picker .demonstration {
    23. display: block;
    24. color: var(--el-text-color-secondary);
    25. font-size: 14px;
    26. margin-bottom: 20px;
    27. }
    28. style>

    (2)切换语言

    Element Plus 的默认语言为英语,改造成中文需要引入国际化配置

    在main.ts文件中进行全局配置

    1. import { createApp } from 'vue'
    2. import ElementPlus from 'element-plus'
    3. import 'element-plus/dist/index.css'
    4. import zhCn from 'element-plus/es/locale/lang/zh-cn'
    5. import App from './App.vue'
    6. import router from './router'
    7. import store from './store'
    8. createApp(App).use(store).use(router).use(ElementPlus,{
    9. locale: zhCn,
    10. }).mount('#app')

    2、禁止选择未来时间

    1. <script lang="ts" setup>
    2. import { ref } from "vue";
    3. const value2 = ref("");
    4. const disabledDate = (time: Date) => {
    5. return time.getTime() > Date.now();
    6. };
    7. script>
    8. <style scoped>
    9. .demo-date-picker {
    10. display: flex;
    11. width: 100%;
    12. padding: 0;
    13. flex-wrap: wrap;
    14. }
    15. .demo-date-picker .block {
    16. padding: 30px 0;
    17. text-align: center;
    18. border-right: solid 1px var(--el-border-color);
    19. flex: 1;
    20. }
    21. .demo-date-picker .block:last-child {
    22. border-right: none;
    23. }
    24. .demo-date-picker .demonstration {
    25. display: block;
    26. color: var(--el-text-color-secondary);
    27. font-size: 14px;
    28. margin-bottom: 20px;
    29. }
    30. style>

    3、从...到...两个日期选择器的时间限制

    1. <script lang="ts" setup>
    2. import { ref } from "vue";
    3. const value1 = ref("");
    4. const value2 = ref("");
    5. const disabledDate1 = (time: Date) => {
    6. return time.getTime() > new Date(value2.value).getTime()
    7. };
    8. const disabledDate2 = (time: Date) => {
    9. return time.getTime() < new Date(value1.value).getTime()
    10. };
    11. script>
    12. <style scoped>
    13. .demo-date-picker {
    14. display: flex;
    15. width: 100%;
    16. padding: 0;
    17. flex-wrap: wrap;
    18. }
    19. .demo-date-picker .block {
    20. padding: 30px 0;
    21. text-align: center;
    22. border-right: solid 1px var(--el-border-color);
    23. flex: 1;
    24. }
    25. .demo-date-picker .block:last-child {
    26. border-right: none;
    27. }
    28. .demo-date-picker .demonstration {
    29. display: block;
    30. color: var(--el-text-color-secondary);
    31. font-size: 14px;
    32. margin-bottom: 20px;
    33. }
    34. style>


    三、Uncaught (in promise) Error报错

    Uncaught (in promise) Error 的报错通常出现在使用 Promise 的异步操作中。下面是使用 Promise 的异步操作,一些可能出现报错的原因:

    1、异步操作中的 Promise 对象没有被正确处理:当使用 Promise 进行异步操作时,应该通过调用 then 或 catch 方法来处理异步操作的结果

    2、异步操作中的网络请求失败:当使用 Promise 进行网络请求时,如果请求失败或出现网络错误, Promise 对象的状态会变为 rejected,如果没有相应的 catch 语句来处理错误,就会出现 Uncaught (in promise) Error 的报错

  • 相关阅读:
    JAVA:实现Sudoku数独算法(附完整源码)
    【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现
    Long类型的数据,后端传给前端产生的精度丢失问题
    使用 hint 进行数据库内排序
    Linux 安装字体
    js预编译(全局预编译/函数预编译)
    网络原理之TCP_IP
    GO 工程下载依赖操作流程(go mod)
    git版本回退
    latex 编译
  • 原文地址:https://blog.csdn.net/qq_51478745/article/details/133959609