2
我正在嘗試在javascript中編寫正則表達式來識別json中發現的任意javascript函數的字符串表示形式,即。像Javascript正則表達式以模式結尾
{
"key": "function() { return 'I am a function'; }"
}
這是很容易識別的開始,但我無法弄清楚如何識別結束雙引號,因爲該功能可能還包含轉義雙引號。我最好的嘗試迄今
/"\s*function\(.*\)[^"]*/g
它工作得很好,如果有在函數的字符串沒有雙引號。 json鍵值的結尾將以雙引號和隨後的逗號或右括號結束。有沒有一些方法來檢索所有字符(包括換行?)直到
not "/s*, and not "/s*}
一個否定模式等......或者我需要採取沒有正則表達式完全不同的方法?
這裏的是當前的測試數據我的工作: http://regexr.com/39pvi
它不工作,如果有'在這樣的函數體\ N':' 「功能(){ 回報 '你好\ n樂趣 ction東西';}」' – friedi 2014-10-26 17:42:13
它作品,請參閱http://regex101.com/r/oY5jU1/1。 ''[^「\\] *'也會匹配換行符。 – 2014-10-26 17:46:25
如果此'()'塊中存在任何'\ n',那麼他需要改變正則表達式,如'\ s * function \你可以切換這兩個部分,並省略\\:'「\ s * function \(。* \)。\\ s \ s] *?\)(?:[^」\\] | \\「)*' – 2014-10-26 17:48:34