对于微小但非常令人沮丧的问题,如果能得到一些帮助,将不胜感激.我正在与Element Plus库一起进行Vue项目. 用户输入:‘123456789’ 我需要:‘+998-(12)345-67-89

元素加上有格式化程序,但我需要它与正则表达式.不幸的是,我很难让它发挥作用. https://element-plus.org/en-US/component/input.html#formatter

我现在只查了一下号码,想不出更多了

<script setup>
import { ref, unref } from 'vue'
import { ElInput } from 'element-plus'

const phoneNumber = ref('')
</script>
<template>
  <el-input v-model="phoneNumber" :formatter="(value) => value.replace(/\D/g, '')" />
</template>

推荐答案

您可以使用以下正则表达式:

value.replace(/^\+998|\D/g, '').replace(/^(\d{1,2})(\d{1,3})?(\d{1,2})?(\d{1,2})?.*/, (m, g1, g2, g3, g4) => `+998-(${g1})` + (g2 ? `-${g2}` : '') + (g3 ? `-${g3}` : '') + (g4 ? `-${g4}` : '')))

第一个.replace(/^\+998|\D/g, '')删除字符串开头的+998(这是通过成功的后续替换添加的)和任何非数字字符,而replace(/^(\d{1,2})(\d{1,3})?(\d{1,2})?(\d{1,2})?.*/, (m, g1, g2, g3, g4) => `+998-(${g1})` + (g2 ? `-${g2}` : '') + (g3 ? `-${g3}` : '') + (g4 ? `-${g4}` : ''))仅在必要时添加-来重新格式化数字.

Vue.js相关问答推荐

如何使用Nuxt 3动态处理无限嵌套路由?

如何在与父集合相同的读取中取回子集合(或重构数据?)

Vue 3:插槽属性 - 可以通过 props 传递数据吗?

Vuetify右侧并排switch

两个div元素之间的vue2过渡

我是否必须在 Vue 3 中使用 Composition API,还是仍然可以使用Vue 2的方式工作?

如何在 Vuetify v-data-table 上对齐标题

Vue cli 3项目,图像路径中的动态src不起作用

带有 vue.js 的 img 网址

在 SPA VueJS 中全局声明 mapState 和 mapMutations

W3C 验证和 Vue 的 HTML 绑定语法

如何判断 Vue 组件是否处于活动状态

Vue更改宽度和内容

模块构建失败:错误:没有给出解析器和文件路径,无法在 nuxtjs 中推断出解析器

过渡后的 v-if 下方的过渡元素

Vue.js 的 $emit 和 $dispatch 有什么区别?

标签中的 href 赋值

如何访问通用 javascript 模块中的当前路由元字段

使用 CloudFront 部署在 S3 上的 VueJS 应用程序的指定的密钥不存在

隐藏特定标题及其在 vuetify 数据表中的对应列