js實現乙個表單輸入驗證,重複字元驗證

2021-08-20 13:34:55 字數 2001 閱讀 4466

加班到現在, 還是得發個 csdn

本文主要通過乙個案例介紹兩個東西

正規表示式中必須含有某類字元的時候對應的正則寫法(在我之前的正則文章中已經寫過了)

重複字元以及連續字元的判斷方式

我們要求 password 中不能含有 類似於:'abc' 'bca' '111' '222' '333' '123' 'aaa'這種 重複字元和連續字元。

這是學習正則的一種誤區: 正則無敵,處處用正則

使用正則檢測重複字元
var str = '111';

var reg = /(\w)\1\1/;

reg.test(str);

使用正則檢測連續字元

不會寫(理論上通過/123|234|

456.../應該也能寫出來吧)

通過字元之間的 編碼順序來判斷 是否是連續字元 或者 編碼相同來判斷是否是重複字元

/**

* 如果是連字元 或者 重複字元返回 false

* 否則返回 true

*/function

judgechar

(str)

// 判斷重複字元

if (_1 === _2 && _1 === _3 )

} return

true;

}

密碼檢測要求: 包含數字、小寫字母、大寫字母、特殊字元(_$@),其中至少包含 3 種字元,至少包含8位字元, 不能含有重複字元或者 連續字元(如: 111,aaa,123,abc)

首先面對驗證的問題,首要想的是 正規表示式, 而真正在進行判斷的時候,我們通常會正規表示式配合其他的字串方法來使用

我一般採取是切分驗證,每個小需求分開來驗證。

找出其中可以使用這個來 驗證的

不容易使用正則驗證的 使用其他方法來實現

正則和字串方法都可以使用的 那就考慮那種好些

分析題目要求:

0.不能含有其他型別字元

1.8 位字元 ,可以使用字串長度,也可以使用正則

2.重複字元, 連續字元: 使用非正則手段

3.4種字元中選取 至少選取三種字元: 使用正則來實現

反面 列舉字元分配種類的時候( 10 種)

function

checkpwd

(str)

// 8 位

if (str.length < 8)

// 重複連續字元

if (!checkrepeatchar(str))

// 至少 3 種字元

var reg1 = /(?=.*[a-z])(?=.*[a-z])(?=.*\d)|(?=.*[a-z])(?=.*[a-z])(?=.*[_$@])|(?=.*[a-z])(?=.*\d)(?=.*[_$@])|(?=.*[a-z])(?=.*\d)(?=.*[_$@])/;

if (!reg.test(str))

return

true;

function

checkrepeatchar

(str)

// 判斷重複字元

if (_1 === _2 && _1 === _3 )

} return

true;

}}// 測試資料

checkpwd('12323eqedf$#!@#');// 含有非法字元

checkpwd('qw23q'); // false 長度不夠

checkpwd('123qer_sdf'); // false 連續字元

checkpwd('qqq12jla@'); // false 重複

checkpwd('712adfsdf'); // true

乙個簡單的表單驗證JS

這個表單驗證支援空值,長度,範圍,群組,ajax 示例效果 驗證模式1 驗證模式2 使用者名稱密碼 類別類別1 類別2 類別3 類別4 專案專案1 專案2 專案3 專案4 示例 validator.add message 使用者名稱已經存在!validator.add validator.add v...

封裝乙個表單驗證類

封裝乙個表單驗證類 中文驗證 郵箱驗證 號碼 手機 qq 身份證 由字母 數字 下劃線組成,不能以數字開頭 header content type text html charset utf 8 class form x u return preg match reg,str 郵箱驗證 引數 ema...

乙個帶有超級羅嗦注釋的 JS表單驗證

修改了幾個小bug.完善一下 window.onload initforms var crosstype function initforms 針對某些特殊選項,改變後會影響其他值,則可以類似下面的 做相應 var inputtag document.getelementsbytagname r i...