這篇記錄用 Vue 做一個簡單的密碼強度判斷。
HTML
<div id="app">
<input type="password" v-model="password">
<p>{{ strength }}</p>
</div>
Vue
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
const vm = new Vue({
el: '#app',
data: {
password: '',
},
computed: {
strength() {
let score = this.password.length;
// 包含大寫 A-Z
if (/[A-Z]/.test(this.password)) score *= 1.25;
// 包含小寫 a-z
if (/[a-z]/.test(this.password)) score *= 1.25;
// 包含數字 0-9
if (/[0-9]/.test(this.password)) score *= 1.25;
// 包含不是大寫 A-Z、小寫 a-z、數字 0-9 的字元
if (/[^A-Za-z0-9]/.test(this.password)) score *= 1.25;
// 密碼夠長夠完美
if (score > 40) return 'Perfect';
if (score > 20) return 'Great';
if (score > 10) return 'Good';
return 'weak';
},
},
});
</script>
2026 年後記
這篇是 2018 年留下來的 Vue 練習,當時是直接透過 CDN 引入 Vue 2,再使用 new Vue() 搭配 el 掛載到頁面上。
現在 Vue 專案的寫法已經和當年不同,Vue 3 也改成使用 createApp() 建立應用程式。
另外,這裡的密碼強度計分方式只是當時練習使用的簡單判斷,並不適合直接作為正式服務的密碼安全標準。
這篇就保留當年的寫法,作為以前的技術紀錄。