页面范围的正则表达式

use*_*247 2 c# regex

c#中用于验证以下条件的最佳正则表达式是什么?

1,2-10,5-10,6,9-100 - 它是指定为范围的页码或用逗号分隔的个别页码.

Mar*_*ulz 5

请尝试以下表达式:

\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*
Run Code Online (Sandbox Code Playgroud)

请注意,该模式非常脆弱,因为它不允许任何空格.


这个想法是围绕主子模式构建的\d+(?:-\d+)?:

  1. \d+ - 匹配一个或多个连续数字(独立或左边界)
  2. -\d+ - 匹配减号后跟一个或多个数字(右范围边界)

尾随问号使得减号和右范围边界可选(这也需要匹配单页数); 在(?:)表示非捕获组.