選角方面,九把刀在劇本階段就設定柯震東飾演阿綸;小咪和Pinky經試鏡後由宋芸樺和王淨勝出,為了更精準選角,她倆都針對上述角色各拍了試拍帶,戴上粉紅色假髮試效果。決策團隊甚至在試片室的大銀幕播放帶子,以判定誰更符合角色的感覺。
九把刀表示,拍測試帶是他拍片的一貫做法,目的是以科學方式決定角色歸屬,還可當做決策團隊取得共識的依據。他說:「我認為宋芸樺和王淨的角色互換也成立,但看試拍帶時覺得,好像角色照大家看到的樣子分配很好。選角不是我一個人說了算,是大家一起做的最好決定。」
《月老》小說版安排宋芸樺飾演的小咪有可能因地震而遇難,柯震東飾演的阿綸為了救她,必須想辦法為她綁上紅線。為了增加戲劇衝突,九把刀改編劇本時,增加「鬼頭成」一角,取代書中的地震情節,並找來馬志翔飾演。
九把刀表示,起初選角列出很多人選,「但他是裡面最高最帥和最壯的。你可以去想,還有誰可以比他更高更壯、而且也很帥。他們一開始幫我挑的角色都比較狠,看起來就像壞人。可是我說,鬼頭成其實是英雄,只有這樣子的人入魔大家才會覺得很可惜,甚至有些人會幫他加油。」
起初馬志翔的戲份沒有那麼重,但後來愈來愈立體、重要,因此戲份愈加愈多,甚至入圍本屆金馬獎最佳男配角。九把刀說:「不知道馬志翔會覺得高興、還是覺得很虧?(一直加戲)真的對他很不好意思。」