正则表达式匹配带连字符的数字范围

时间:2009-11-06 07:00:23

标签: regex

这很简单,但我仍然难以理解我的答案是否正确。

我想匹配以下格式的字符串:

  • 70-60
  • 50-40
  • 100-90
  • 等.....

我今天刚刚开始学习正则表达式,我制定了以下模式来匹配字符串:

/^[0-9]+-[0-9]+/$

但是在使用在线正则表达式测试工具测试时,我发现它不匹配。

任何可以帮助我的指针?非常感谢。

6 个答案:

答案 0 :(得分:3)

$需要在正则表达式中

/^[0-9]+-[0-9]+$/

答案 1 :(得分:1)

怎么样:

\A[0-9]+\s*\-\s*[0-9]+\Z

注意:

  • 使用\A\Z代替^$
  • 添加\s*以考虑可能的空格

答案 2 :(得分:0)

你对正则表达式语法有点偏僻。你想要的是:

/^[0-9]+\-[0-9]+$/

答案 3 :(得分:0)

使用regex.powertoy.org

正则表达式(PHP / Perl式语法:

m/^[\d]+\s*-\s*[\d]+$/m

测试:

70-60
50-40
100 -90

匹配所有三个测试字符串。

请注意,尾随m会使其成为多行匹配(前导m使其成为匹配的正则表达式而非替换正则表达式)。如果您将所有测试数据放在测试区域中并且不使用多行匹配它将不匹配(它可能与第一个匹配...)因为它试图匹配整个输入(^到$ )但正则表达式只匹配每一行。将测试数据更改为仅一个(70-60),它在没有m的情况下工作。

答案 4 :(得分:0)

^[\d]+-[\d]+$

除了一些其他答案适用于您的测试数据IF,您还要检查^ $ matches换行符。

/^[\d]+-[\d]+$/m

那么你应该使用的表达式

答案 5 :(得分:0)

终于解决了...... !!!

  /[\d]+:?[\d]*/

这将检查以下每个

100

100:90

90:70

感谢大家的宝贵意见......