Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要只允许有效页码的正则表达式,如1,2,3,4-5,每个页码的最大长度为3位(1-999)_Javascript_.net_Regex_Validation - Fatal编程技术网

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
  • (?:,(?:[1-9]|[1-9]\d | 1[01]\d | 12[0-5])(?:-(?:[1-9]|[1-9]\d |[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
  • $
    -字符串结束

如果页面范围只能包含一个连字符,则可以匹配1+个数字,后跟可选部分以匹配连字符和1-3个数字

然后用逗号将该模式重复0多次

^\d{1,3}(?:-\d{1,3})?(?:,\d{1,3}(?:-\d{1,3})?)*$
解释

  • ^
    字符串的开头
  • \d{1,3}(?:-\d{1,3})
    匹配1-3位数字,也可以选择匹配
    -
    和1-3位数字
  • (?:
    非捕获组
    • ,\d{1,3}(?:-\d{1,3})
      匹配逗号、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})?)*$