Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex 创建正则表达式以匹配数字或数字范围_Regex - Fatal编程技术网

Regex 创建正则表达式以匹配数字或数字范围

Regex 创建正则表达式以匹配数字或数字范围,regex,Regex,我一直在看regex帮助页面,但似乎无法找到/理解解决方案 我的问题是:我想要一个正则表达式,它允许在数据输入验证代码中集成一个数字或一系列数字。例如,一个人只能以完全相同的格式输入12或12-50,没有额外的破折号或任何东西 我为ex.12-50创建的解决方案是[0-9][-][0-9],效果非常好。然而,我不能将上面的正则表达式与一个允许这种格式以及一个数字格式的正则表达式集成 我尝试使用OR运算符,[0-9]|[0-9][-][0-9],但它似乎并不完美,因为我可以输入不正确的格式,如12

我一直在看regex帮助页面,但似乎无法找到/理解解决方案

我的问题是:我想要一个正则表达式,它允许在数据输入验证代码中集成一个数字或一系列数字。例如,一个人只能以完全相同的格式输入12或12-50,没有额外的破折号或任何东西

我为ex.12-50创建的解决方案是[0-9][-][0-9],效果非常好。然而,我不能将上面的正则表达式与一个允许这种格式以及一个数字格式的正则表达式集成

我尝试使用OR运算符,[0-9]|[0-9][-][0-9],但它似乎并不完美,因为我可以输入不正确的格式,如12-、123-等。

首先[0-9][-][0-9]与12-50的全部不匹配,只是2-5子字符串。这就解释了你的误报:在每种情况下正则表达式都匹配一个子字符串

因此,您需要首先匹配整个字符串:^…$

此外,您需要的是数字序列而不是单个数字,因此可以说:\d+匹配一个或多个数字“\d”匹配一个数字[1]

比如:

^\d+(-\d+)?$
应该有用。扩展这个

^ Start of string \d+ One or more digits ( Start of group -\d+ Dash followed by one or more digits ) End of group ? Preceding element – the group – is optional $ End of string
[1] 它可能与Unicode中的非ASCII数字相匹配,具体取决于您的特定正则表达式引擎,但您需要检查文档以了解这一点。

因为您需要精确的匹配模式,所以需要使用开始和结束指示符

^:表示开始

$:表示结束

|:使用或条件给出多个正则表达式

“+”:查找至少一个accurance


破折号和以下两个数字是否为可选组/\d\d-\d\d?/已尝试的^[0-9]$|^[0-9][-][0-9]$的可能重复项,但它不起作用。很抱歉,我不太会使用正则表达式。请尝试^[0-9]+|[0-9]+[-][0-9]+$
^(([0-9]+)|([0-9]+[-][0-9]+))$