Javascript 需要只允许有效页码的正则表达式,如1,2,3,4-5,每个页码的最大长度为3位(1-999)
我的文本框应该只允许有效的页码,如Javascript 需要只允许有效页码的正则表达式,如1,2,3,4-5,每个页码的最大长度为3位(1-999),javascript,.net,regex,validation,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"; // Rege
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之间
- 范围应仅出现在两个数字之间
-字符串的开头^
-(?:[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
-0或更多序列(?:,(?:[1-9]|[1-9]\d | 1[01]\d | 12[0-5])(?:-(?:[1-9]|[1-9]\d |[01]\d | 12[0-5])*
-逗号,
-从(?:[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
-字符串结束$
^\d{1,3}(?:-\d{1,3})?(?:,\d{1,3}(?:-\d{1,3})?)*$
解释
字符串的开头^
匹配1-3位数字,也可以选择匹配\d{1,3}(?:-\d{1,3})
和1-3位数字-
非捕获组(?:
匹配逗号、1-3位数字,还可以选择匹配,\d{1,3}(?:-\d{1,3})
和1-3位数字-
关闭非捕获组并重复0多次)*
var pageNumberHypenComma=newregexp(“^\\d{1,3}(?:-\\d{1,3}”)(?:,\\d{1,3}(?:-\\d{1,3})*$”;
[
"1,2,3,4-9-4",
"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",
"1,2,3,4-9,12"
].forEach(s=>console.log(s+“==>”+pageNumberHypenComma.test))
为什么是C?您拥有的代码是JS。正则表达式必须是^[0-9]{1,3}(?:[,-][0-9]{1,3})*$
4-9-4是有效范围吗?@Raseeth是有效范围吗?@Raseeth您可以将1-9与2个可选数字匹配\d{0,2}
请参见@Raseeth是有效范围吗?不是VALID@Raseeth您是否验证了这两个答案?是否可以验证,如页码不应超过125?@Raseeth Try/^[1-9][0-9]{0,2}(?:[,-][1-9][0-9]{0,2})*$/
是否可以验证,如页码不应超过125?@Raseeth请参见,将[1-9][0-9]{0,2}
替换为(?:[1-9][1-9].[1-9]\d}1241[01]\d | 12[0-5])
。也就是说,/^(?[1-9]|[1-9]\d |[1-9]|[1-9]|[0-5])(?:[,-](?:[1-9]|[1-9]\d |[01]\d | 12[0-5])*$/
@Raseeth你应该解释你问题中的每个要求。我更新了答案的所有部分。
^\d{1,3}(?:-\d{1,3})?(?:,\d{1,3}(?:-\d{1,3})?)*$