如何使用 vuelidate 检查两个正则表达式值
How do I check two regex values with vuelidate
我正在尝试使用 vuelidate 验证输入字段。如果以下任一正则表达式为真,我需要它 return 有效。
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,
},
除了使用条件运算符,您还可以通过交替放置 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
我正在尝试使用 vuelidate 验证输入字段。如果以下任一正则表达式为真,我需要它 return 有效。
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,
},
除了使用条件运算符,您还可以通过交替放置 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