2012-09-20 68 views
0

爲什麼此正則表達式相比,一上線的正則表達式測試器返回一個完全不同的結果以JavaScript,在http://www.gskinner.com/RegExr/正則表達式產生不同的結果以JavaScript

var patt = new RegExp(/\D([0-9]*)/g); 
"/144444455".match(patt); 
發現

在控制檯的返回是:

["/144444455"] 

雖然它在regexr測試器中返回了正確的組。

我想要做的就是提取一段文本中的第一筆金額。無論該文本是以「/」開頭還是有大量其他無用信息。

+0

向我們展示一些具有預期結果的示例輸入。 – IProblemFactory

+0

正則表達式引擎並不完全相同,內置的正則表達式庫因語言而異。在線人使用ActionScript 3內置庫,因爲它是用Flex/Flash編寫的。這與Javascript使用的不一樣。 – Orbling

回答

3

正則表達式不正是你告訴它:

  • \D相匹配的非數字(在這種情況下/
  • [0-9]*一串數字(144444455

匹配您需要訪問第一個捕獲組的內容:

var match = patt.exec(subject); 
if (match != null) { 
    result = match[1]; 
} 

或者乾脆丟棄\D完全 - 我不知道爲什麼你認爲你需要它擺在首位...

然後,你或許應該刪除/g修改,如果你只想匹配第一個數字,而不是文字中的所有數字。所以,

result = subject.match(/\d+/); 

應該工作得很好。

+0

你打敗了我,正要回答。 :) –

相關問題