在 App Inventor 中用 Regex 讓輸入框只能打數字

之前有個同學用 App Inventor 做的 app 裡有個 bug 是最新消息列表裡的能指定切換頁數的輸入框,
如果輸入的不是數字會害那頁壞掉。

今天亂逛網路時看到有人提到正規表示式 (英文: regex),就突然想到可以用這方法驗證輸入的是不是數字。
(寫這篇文章途中發現有更簡單解法,不想浪費時間的話直接跳到最後一段吧 Orz)


但我查到都說 App Inventor 不能用 regex 來驗證 (validate) 文字[1][2]

不過幸好 App Inventor 2 能夠匯入 (Import) 其他外掛程式 (Extension) 來用,
我再用以上出現的幾個英文單字拿去 Google,
就查到了這個由 Pura Vida Apps 開發的外掛可以下載[3]
它能幫你看字串能不能符合給它的 regex,
最後產出 True 或 False,
這樣雖然有點麻煩,但應該解決了這個問題。

為了避免誤導你,我親自試了一下這作法是不是真的有效,
因此有個試做範例在這裡[4]
這裡面順便示範了怎麼用對大部分人較直覺的方式—紅色警示,來讓使用者知道輸入無效。


然後做這個範例途中我才發現 App Inventor 本身在 Textbox 的 Properties 選單就有內建 NumbersOnly 的功能了阿阿阿 QAQ,
效果就是只讓手機彈出數字鍵盤,
不過學會 regex 的觀念對以後寫和用其他程式應該是會有幫助的吧。

[1]: http://git.net/ml/programming-with-app-inventor/2011-10/msg00287.html
[2]: http://stackoverflow.com/questions/29570154/how-to-validate-input-txt-in-app-inventor-2
[3]: https://puravidaapps.com/tools.php#matches
[4]: https://drive.google.com/file/d/0B_gI0KCLWvMLUmZ0WFUxU3BzM00/view?usp=sharing

留言