gpt4 book ai didi

javascript - 如何使用 vuelidate 检查两个正则表达式值

转载 作者:行者123 更新时间:2023-12-04 08:42:09 25 4
gpt4 key购买 nike

我正在尝试使用 vuelidate 验证输入字段。如果以下任一正则表达式为真,我需要它返回有效。

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
}
}

验证

numbercheck: {
required,
checkvals
},

我如何让它工作?

解决方案

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)
},

方案二

const numbercheck = helpers.regex("mob", /^\D*(?:7(?:\D*\d){12}|1(?:\D*\d)11})\D*$/);

验证

checkvals: {
required,
numeric,
numbercheck,
},

最佳答案

除了使用条件运算符,您还可以通过放置 7(\D*\d){12}1(\D*\d)11 使用单个模式} 在交替中,因为模式的开始和结束是相同的。

如果以后不需要捕获组的值,可以使用 (?:

将其转换为非捕获组

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

模式可能是这样的:

^\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 demo

关于javascript - 如何使用 vuelidate 检查两个正则表达式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64511081/

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