首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx数字(只有4位数字)和,

RegEx数字(只有4位数字)和,
EN

Stack Overflow用户
提问于 2021-06-03 14:51:29
回答 3查看 72关注 0票数 0

我需要验证数字和',‘,但是使用这个condicions:

  1. 只有4位数字的组,在正则表达式中用','
  2. no \(管道)分隔。
  3. 没有空白。
  4. 没有组的限制(2345,2345,....n)

示例:

代码语言:javascript
复制
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

我的准则是:

代码语言:javascript
复制
^([\d]{4},?)+$ // but acept:  2344,23445657,8753 ->incorrect
EN

回答 3

Stack Overflow用户

发布于 2021-06-03 14:54:51

([\d]{4},?)+说:“4个数字,然后是一个可选逗号,一次或多次,所以它会很高兴地接受12345678,因为这是四个数字,没有逗号(与,?匹配),然后是四个数字。您想要的是”总是前四个数字“,因为这是它需要匹配的最小模式,后面跟着以逗号开头的零或多个组,最后是一个孤立的可选逗号。

^\d{4}(,\d{4})*,?$

为了验证,我们使用了regex101:https://regex101.com/r/o5MhS9/1

票数 1
EN

Stack Overflow用户

发布于 2021-06-03 15:04:27

一个简单的解决方案是

代码语言:javascript
复制
^(\d{4},)*(\d{4})?$

测试用例不考虑空字符串,因此不清楚它是否正确。

票数 1
EN

Stack Overflow用户

发布于 2021-06-03 15:15:03

我想,在提交某些内容时,您希望将其用于验证目的。Regex是一个很好的工具,但是它可能会给你一些不想要的行为,比如给你多个好处。

我想知道是否更好的做法是创建一个分解你的字符串并评估每一个片段的东西,比如:

代码语言:javascript
复制
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));

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

https://stackoverflow.com/questions/67823735

复制
相关文章

相似问题

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