2009-11-06 52 views
0

这很简单,但我仍然难以确定我的答案是否正确。正则表达式匹配连字号的范围

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

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

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

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

但是,在一个在线正则表达式测试工具中测试它后,我发现它不匹配。

任何能帮助我的指针?提前致谢。

+0

是你想要匹配唯一文本的文本,还是它在一些其他字符串 - 它具有consequ为你的正则表达式。 – 2009-11-06 07:34:18

回答

0

工作了最后表达... !!!

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

这将检查以下每个

100:90

90:70

谢谢大家对u'r宝贵意见......

+0

它也会匹配'100:' - 那是你想要的吗?通常情况下,人们只有在后面有东西时才想匹配分隔符:'/ \ d +(?:: \ d +)?/' – 2009-11-06 13:41:23

3

$需要在正则表达式

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

仍似乎没有工作.... – SpikETidE 2009-11-06 07:12:29

+0

我测试它是安全的。您需要发布您的输入和输出以向我们展示发生了什么。那个正则表达式网站也不适合我:D也许它不是你的错。对于可能的空间(其中一个例子有一个空格), – cgr 2009-11-06 07:35:16

1

怎么样内:

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

注:

  • 使用\A\Z代替^$
  • 添加\s*考虑到可能的空间
+0

+1,但我没有看到你对^和$的看法。那些有什么问题? BTW \ A \ Z在JavaScript等一些正则表达式引擎中不起作用,而^和$似乎是通用的。 – quosoo 2009-11-06 07:08:48

+0

其中一个例子中有一个空格。 – 2009-11-06 07:09:23

+0

该空间是一个错误..我会编辑它... 我使用这个正则表达式与JavaScript ..感谢您的指针.... – SpikETidE 2009-11-06 07:20:10

0

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

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

不需要\ - 。 15个字符。 – 2009-11-06 07:10:07

+0

- 之间的数字不需要逃脱 – Thomas 2009-11-06 07:12:05

+0

我正在测试与http://regexpal.com/ 上述给出的正则表达式似乎不工作... 我在哪里做错了......? ?? – SpikETidE 2009-11-06 07:15:18

0

使用regex.powertoy.org

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

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

测试:

70-60 
50-40 
100 -90 

所有三个测试字符串匹配

注意尾部m使这是一个多行匹配(导致m使这是一个匹配的正则表达式不是替代正则表达式)。如果你把所有的测试数据都放在测试区域,并且不使用多行匹配,它就不会匹配(它可能会匹配第一个......),因为它试图匹配整个输入(^到$ ),但该正则表达式只会匹配每一行。将测试数据更改为只有一个(70-60),它的工作原理没有m

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

以及其他一些答案适用于您的测试数据IF,您检查^ $匹配换行符。

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

然后将你应该使用