2015-07-03 63 views
1

我有以下的正則表達式:想更多關於分類我正則表達式(正則表達式)

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g); 

它匹配「翻譯(-0.24588 125.3)」「kjgjhgjkg jgjgj kjgjkg HJ翻譯(-0.24588 125.3)jjhkjghj「 string。

下面顯示了我接觸到的內容。我找到一個特定的字符串,但我想進一步替換匹配的字符串。

var re = new RegExp(/\btranslate\b(\(([-+]?([0-9]+)(\.[0-9]+)?)\s([-+]?([0-9]+)(\.[0-9]+)?)\))/g); 
undefined 
var string = "kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj"; 
undefined 
var firstelem = re.exec(string); 
undefined 
firstelem 
["translate(-0.24588 125.3)", "(-0.24588 125.3)", "-0.24588", "0", ".24588", "125.3", "125", ".3"] 

這裏,[ 「翻譯(-0.24588 125.3)」, 「(-0.24588 125.3)」, 「-0.24588」, 「0」,」 0.24588" , 「125.3」, 「125」, 「.3」]

我認爲它應該只有一個匹配,那將是 [「translate(-0.24588 125.3)」]

所以,我其實需要更換翻譯(-0.24588 125.3)翻譯(-0.24588,125.3)「kjgjhgjkg jgjgj kjgjkg HJ翻譯(-0.24588 125.3)jjhkjghj」字符串。我怎樣才能做到這一點?

任何建議如何提高我的正則表達式或代碼的其他部分是值得歡迎的。

+0

看一看,只有一個子匹配與[this snippet]一起返回(http://jsfiddle.net/1g9bm1fx/1/)。這不是你的正則表達式的問題。 –

+0

@stribizhev我看起來老兄。 –

+0

@stribizhev嗨,所以我實際上需要在字符串「kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3)jjhkjghj」翻譯(-0.24588 125.3)**翻譯(-0.24588 125.3)**,所以我該如何做到這一點?? –

回答

1

要添加translate(value value)字符串中一個逗號,你可以修改你的代碼是這樣的:

var re = /\b(translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?)))\s([-+]?(?:[0-9]+)(?:\.[0-9]+)?\))/g; 
 
var str = 'kjgjhgjkg jgjgj kjgjkg hj translate(-0.24588 125.3) jjhkjghj'; 
 
var result = str.replace(re, "$1, $2"); 
 
document.write(result);

我所做的是重新分配的捕獲組,這樣只有兩個其中。第一個(translate\b(?:\((?:[-+]?(?:[0-9]+)(?:\.[0-9]+)?)))匹配translate(value,第二個 - ([-+]?(?:[0-9]+)(?:\.[0-9]+)?\)) - 匹配value)

+0

不錯的一件事我學到了一件事,就是讓正則表達式不是你需要做的唯一事情,它將如何幫助你使你的解決方案成爲可能Thanx @stribizhev –