我的文本框应该只允许像
这样的有效页码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])
-1
到125
(?:-(?:[1-9]|[1-9]\d|1[01]\d|12[0-5]))?
- 可选组匹配-
和一个从1
到125
的数字
(?:,(?:[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])
- 来自1
到125
(?:-(?:[1-9]|[1-9]\d|1[01]\d|12[0-5]))?
- 可选-
的序列和从1
到125
的数字
$
- 字符串结尾。
关于javascript - 需要只允许有效页码的正则表达式,例如 1、2、3、4-5,每个页码的最大长度为 3 位数字 (1-999),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406811/