首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用vuelidate检查两个regex值

如何使用vuelidate检查两个regex值
EN

Stack Overflow用户
提问于 2020-10-24 07:38:43
回答 1查看 8.1K关注 0票数 3

我试图用vuelidate验证输入字段。如果下列任何一个正则表达式是真的,我需要它返回有效。

代码语言:javascript
运行
复制
const val1 = helpers.regex('val1', /^\D*7(\D*\d){12}\D*$/)
const val2 = helpers.regex('val2', /^\D*1(\D*\d){11}\D*$/)

 const checkvals = () => {
  if(val1 || val2) {
      return true
  } else{
      return false
  }
}

验证

代码语言:javascript
运行
复制
numbercheck: {
      required,
      checkvals
    },

我怎么才能让这个起作用?

溶液

代码语言:javascript
运行
复制
import { or, helpers, required } from 'vuelidate/lib/validators'

    const val1 = helpers.regex('val1', /^\D*7(\D*\d){12}\D*$/)
    const val2 = helpers.regex('val2', /^\D*1(\D*\d)11}\D*$/)


    checkvals: {
      numbercheck,
      valid: or(val1, val2) 
    },

解决方案2

代码语言:javascript
运行
复制
const numbercheck = helpers.regex("mob", /^\D*(?:7(?:\D*\d){12}|1(?:\D*\d)11})\D*$/);

验证

代码语言:javascript
运行
复制
checkvals: {
      required,
      numeric,
      numbercheck,
    },
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 08:31:26

与使用条件运算符不同,您还可以通过将7(\D*\d){12}1(\D*\d)11}交替使用,因为模式的开始和结束是相同的。

如果以后不需要捕获组的值,可以使用(?:将其提交给非捕获组。

我怀疑在第二部分中,这个11}应该是一个像{11}那样的量词。

这种模式可能看起来如下:

代码语言:javascript
运行
复制
^\D*(?:7(?:\D*\d){12}|1(?:\D*\d){11})\D*$

解释

  • 字符串的^\D*开始并匹配0+非数字
  • 用于交替(?: 的非捕获组
    • 7(?:\D*\d){12}匹配7和由可选的非数字分隔的12位数字
    • |
    • 1(?:\D*\d){11}匹配1和由可选的非数字分隔的11位数字

  • )闭非捕获群
  • \D*$匹配可选的非数字并断言字符串的结尾

regex演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64511081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档