2009-11-06 90 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 

然後將你應該使用