有的網頁為了防止 tampermonkey 這類插件讀取頁面中的 js 變量,把變量寫到了匿名自調用函數 self-invocation 中,例如 <script type="text/javascript"> (function() { var a = 1; console.log(a); })(); </script> 而我為了某些不可告人的目的必須讀取到變量 a 的值。 一種有效的方式是,使用 ajax 獲取當前頁面的源代碼,然后正則匹配中某個指定變量的值。 正則匹配 var s = 'var name = "hahahaha"'; var s = 'var name = "hahahaha";'; s.match(/var \w+ = (.+);/); 0: "var name = "hahahaha";" 1: ""hahahaha"" var s = 'var name = "hahahaha"; var age = 10;'; s.match(/var \w+ = (.+);/); 0: "var name = "hahahaha"; var age = 10;" 1: ""hahahaha"; var age = 10" // 避免貪婪匹配 s.match(/var \w+ = (.+?);/); 0: "var name = "hahahaha";" 1: ""hahahaha"" s.match(/var age = (.+?);/); 0: "var age = 10;" 1: "10" 避免貪婪匹配 * - zero or more *? - zero or more (non-greedy) + - one or more +? - one or more (non-greedy) ? - zero or one ?? - zero or one (non-greedy)
原文鏈接:https://www.sunzhongwei.com/javascript-regular-extract-variable-values-in-a-web-page