Re: [問題] 找出js程式碼中的特定函式字串參數
看板RegExp (正規表示式 Regular Expression)作者LPH66 (1597463007)時間10年前 (2015/02/02 15:46)推噓2(2推 0噓 2→)留言4則, 1人參與討論串2/2 (看更多)
※ 引述《mrbigmouth (大嘴先生)》之銘言:
: 使用語言為Javascript
: 環境為瀏覽器
: 目標為在一串"合法的"Javascript檔案中尋找特定函式的呼叫
: 並取出其中塞入的字串參數
: 舉例而言
: 當js程式裡存在i18n("123")
: 我要可以抓出[123]
: 目前的簡單作法是
: i18n\((?:\s*)?\"([^\"\r])*\"(?:\s*)\)
: 但是問題來了
: 這種作法抓不到i18n("你好,\"王大明\"先生")
: 但這對於Javascript是合法的程式碼,而且也是常常出現的情形
: 所以有辦法做到讓Regexp做到以下的match動作嗎?
: i18n("你好,王大明先生") match 抓出[你好,王大明先生]
: i18n("你好,"王大明"先生") not match
: i18n("你好,\"王大明\"先生") match 抓出[你好,"王大明"先生]
: i18n("你好,\\"王大明\\"先生") not match
: i18n("你好,\\\"王大明\\\"先生") match 抓出[你好,\"王大明\"先生]
javascript 的 RegExp 物件可以用 / / 語法來寫, 這樣就不用跳脫 " 跟 \ 了
你要的 RegExp 物件是
/i18n\("(([^"\\]|\\.)*)"\)/
中間關鍵部份解析如下:
" " 一個 literal 字串
( ) 取出其內容
( | )* 內含以下東西零或多個:
[^"\\] 不是 " 或 \ 的字
\\. 或是 \ 後面跟任意一個字
參數不只一個的話就自己在適當地方加 \s* 吧
--
有人喜歡邊玩遊戲邊上逼;
也有人喜歡邊聽歌邊打字。
但是,我有個請求,
選字的時候請專心好嗎?
-- 改編自「古 火田 任三郎」之開場白
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.32
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1422863168.A.A6B.html
推
02/02 16:55, , 1F
02/02 16:55, 1F
→
02/02 16:56, , 2F
02/02 16:56, 2F
→
02/02 16:56, , 3F
02/02 16:56, 3F
推
02/02 17:14, , 4F
02/02 17:14, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章