2012-12-01 142 views
0

我試圖匹配模式:正則表達式匹配的數值

show_clipping.php?CLIP_id=* 

從:

a href="javascript:void(0);" onclick="MM_openBrWindow('show_clipping.php?CLIP_id=575','news','scrollbars=yes,resizable=yes,width=500,height=400,left=100,top=60')">some text</a> 

其中

* 

可以只有數字值(例如:0 ,1,1234)

結果必須返回整體事情(show_clipping.php?CLIP_id=575

我已經試過:

show_clipping.php\?CLIP_id=([1-9]|[1-9][0-9]|[1-9][0-9][0-9]) 

,但我嘗試將截斷的575數字的休息,留下的結果,如:

show_clipping.php?CLIP_id=5 
  1. 怎麼辦我正確匹配數字部分?
  2. 另一個問題是,價值575可以包含任何數值,我正則表達式不會後3位工作,我如何使它與

回答

2

沒有指定什麼語言的數字無窮遠的工作量您使用所以這裏只是regex

'([^']+)' 

說明

'  # Match a single quote 
([^`])+ # Capture anything not a single quote 
'  # Match the closing single quote 

所以基本上是在SI捕捉一切英文引號,show_clipping.php?CLIP_id=5位於第一個捕獲組。

看到它的行動here.

要只捕獲show_clipping.php?CLIP_id=5我會做'(.*CLIP_id=[0-9]+)'

'  # Match a single quote 
(.*  # Start capture group, match anyting 
CLIP_id= # Match the literal string 
[0-9]+) # Match one of more digit and close capture group 
'  # Match the closing single quote 
+0

我可以限制結果只有第一組? – tom91136

+0

是的,查看更新。 –

0
show_clipping.php\?CLIP_id=(\d+) 

\d一個數字匹配,並且+指1或更多的人。

0

如何:

/(show_clipping.php\?CLIP_id=[1-9]\d*)/ 
1

這個怎麼樣?

onclick.match(/show_clipping\.php\?CLIP_id=\d+/) 
["show_clipping.php?CLIP_id=575"] 

(從你的問題的標籤我假設你正在使用的JavaScript)