javascript - 需要只允许有效页码的正则表达式,例如 1、2、3、4-5,每个页码的最大长度为 3 位数字 (1-999)

标签 javascript .net regex validation

我的文本框应该只允许像

这样的有效页码
1,2,3,4-9 
2,8
1-3,5
5-7
7,8-6
1-3,5
1,2
2,3,4,5-6,7
10
11-15
22,25

代码:

// Regex
var pageNumberHypenComma = new RegExp("^[0-9]+(?:,[0-9-]+)*(?:-[0-9,]+)*$");  

// Value of Page Numbers
var txtMemberPages = "1,2,3,4-9,12";

// Regex checking
if (!pageNumberHypenComma.test(txtMemberPages)) {
    alert('Invalid Page Number(s)'); 
    return false;
}

以上正则表达式无效。需要帮助

最佳答案

您的问题的附加要求是:

  • 值不能为零
  • 值应介于 1 到 125 之间
  • 范围只能出现在两个数字之间。

使用

var rng = '(?:[1-9]|[1-9]\\d|1[01]\\d|12[0-5])'; // This is a number from 1 to 125
var pageNumberHypenComma = new RegExp("^" + rng + "(?:-" + rng + ")?(?:," + rng + "(?:-" + rng + ")?)*$");

参见 regex demo

详情

  • ^ - 字符串的开始
  • (?:[1-9]|[1-9]\d|1[01]\d|12[0-5]) - 1125
  • (?:-(?:[1-9]|[1-9]\d|1[01]\d|12[0-5]))? - 可选组匹配 - 和一个从 1125
  • 的数字
  • (?:,(?:[1-9]|[1-9]\d|1[01]\d|12[0-5])(?:-(?:[1 -9]|[1-9]\d|1[01]\d|12[0-5]))?)* - 0个或多个序列
    • , - 逗号
    • (?:[1-9]|[1-9]\d|1[01]\d|12[0-5]) - 来自1125
    • (?:-(?:[1-9]|[1-9]\d|1[01]\d|12[0-5]))? - 可选-的序列和从1125
    • 的数字
  • $ - 字符串结尾。

关于javascript - 需要只允许有效页码的正则表达式,例如 1、2、3、4-5,每个页码的最大长度为 3 位数字 (1-999),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406811/

相关文章:

javascript - 无法使用 'protractor-jasmine2-html-reporter' 更改 "filename: "中的文件名

javascript - 如何使用 JavaScript 过滤器过滤元素?

正则表达式:非捕获组仍然显示

UPC-A 类型条形码的正则表达式

regex - 正则表达式中的 perl 正则表达式

javascript - 使用 Chartist.js 在条形图中显示条形内的文本

javascript - 在 AngularJS View 中的移动网络中显示原生广告时出现问题

c# - 为方法参数赋值

c# - 如何对 "console.readLine"进行单元测试以获取无效输入?

c# - .Net 中的多显示器任务栏