我试图用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)
},
解决方案2
const numbercheck = helpers.regex("mob", /^\D*(?:7(?:\D*\d){12}|1(?:\D*\d)11})\D*$/);
验证
checkvals: {
required,
numeric,
numbercheck,
},
发布于 2020-10-24 08:31:26
与使用条件运算符不同,您还可以通过将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*$
匹配可选的非数字并断言字符串的结尾https://stackoverflow.com/questions/64511081
复制相似问题