首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有一定条件的数范围的正则化

具有一定条件的数范围的正则化
EN

Stack Overflow用户
提问于 2020-06-11 16:41:19
回答 1查看 71关注 0票数 1

我正在使用javascript创建一个项目。为了验证目的,我想在我的项目中实现regex。验证就像增加订单的数字范围--这里是我的要求。

代码语言:javascript
复制
1-56  --------Pass
15 -----------Pass
1-5-9 --------Fail
asd988 -------Fail

50-49 ------- Fail

我试着用这个

代码语言:javascript
复制
^[0-9]+-[0-9]+$

这对我没有用

更新:更改是用户可以添加多个值,如:

代码语言:javascript
复制
1-56,56,3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 17:13:55

您可以匹配由单个或两个数字组成的字符串,捕获数字并在有两个数字的情况下比较它们。如果没有匹配,或者如果第一个数字小于第二个,则只返回false:

代码语言:javascript
复制
const rx = /^(\d+)(?:-(\d+))?$/
const isValid = (string) => {
  const m = rx.exec(string);  
  if (m && !m[2]) {
    return true;
  } else if (m && parseInt(m[2], 10) > parseInt(m[1], 10)) {
    return true;
  } else { 
    return false; 
  }
}

const strs = ['1-56,56,3', '1-56', '15', '1-5-9', 'asd988', '50-49'];

for (let s of strs) {
   console.log( s, s.split(",").every(x => isValid(x)) )
   
}

/^(\d+)(?:-(\d+))?$/正则表达式匹配:

  • ^ - string
  • (\d+)的开始-第1组:一个或多个digits
  • (?:-(\d+))? -一个可选的非捕获组匹配1或0出现的
    • - -一个- char
    • (\d+) -第2组:一个或多个数字-$ -结束string.

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

https://stackoverflow.com/questions/62329268

复制
相关文章

相似问题

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