我需要验证数字和',‘,但是使用这个condicions:
示例:
1234 //correct
1234, //correct
8764,8745 //correct
8974,9874,4567,3456, //correct
8974,9874,4567,3456,2345,3456,3456 //correct
23 //incorrect
2344,23445657,8753 //incorrect
8475,2344565788,8753 //incorrect
8475,34 //incorrect
8475,34,5676,8890 //incorrect我的准则是:
^([\d]{4},?)+$ // but acept: 2344,23445657,8753 ->incorrect发布于 2021-06-03 14:54:51
([\d]{4},?)+说:“4个数字,然后是一个可选逗号,一次或多次,所以它会很高兴地接受12345678,因为这是四个数字,没有逗号(与,?匹配),然后是四个数字。您想要的是”总是前四个数字“,因为这是它需要匹配的最小模式,后面跟着以逗号开头的零或多个组,最后是一个孤立的可选逗号。
^\d{4}(,\d{4})*,?$
为了验证,我们使用了regex101:https://regex101.com/r/o5MhS9/1
发布于 2021-06-03 15:04:27
一个简单的解决方案是
^(\d{4},)*(\d{4})?$测试用例不考虑空字符串,因此不清楚它是否正确。
发布于 2021-06-03 15:15:03
我想,在提交某些内容时,您希望将其用于验证目的。Regex是一个很好的工具,但是它可能会给你一些不想要的行为,比如给你多个好处。
我想知道是否更好的做法是创建一个分解你的字符串并评估每一个片段的东西,比如:
let valid1 = "1234,1234,1234";
let valid2 = "1234,1234,1234,4565";
let invalid1 = "1234,1234,12341";
let invalid2 = "1234,12312344,1231";
function validateFourDigitsCommaSeparated(stringToValidate)
{
let sequences = stringToValidate.split(',');
let hasInvalidSequence = false;
let hasValidSequence = false;
let fourDigitExactlyRegex = /^\d{4}$/;
sequences.forEach(function(sequence)
{
if(sequence.match(fourDigitExactlyRegex))
{
hasValidSequence = true;
}
else {
hasInvalidSequence = true;
}
}
);
return hasValidSequence && hasInvalidSequence === false;
}
console.log('valid1', valid1, validateFourDigitsCommaSeparated(valid1));
console.log('valid2', valid2, validateFourDigitsCommaSeparated(valid1));
console.log('invalid1', invalid1, validateFourDigitsCommaSeparated(invalid1));
console.log('invalid2', invalid2, validateFourDigitsCommaSeparated(invalid2));
https://stackoverflow.com/questions/67823735
复制相似问题