js,vue,element 密码设置密码最小长度8个字符,必须包含数字大小写字母,特殊符号

1.先说一下原生js的几个正则:

this.contains_lovercase = /[a-z]/.test(this.password); //小写

this.contains_number = /\d/.test(this.password); //数字

this.contains_uppercase = /[A-Z]/.test(this.password); //大写

var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")

2.在写入vue代码中需要设置一些样式及判断,本人也是参考了网上其他友人的代码,如有冒犯请见谅

html中:

<input type="password" v-model="passwordOld" placeholder="请输入原密码" />

<div class="input_container" style="marginTop:10px">

<input type="password" @input="p_len" v-model="password" placeholder="请输入新密码" />

<span v-bind:class="{ valid_password_length: valid_password_length , show_password_length: typed}" class="password_length">{{password_length}}</span>

<div class="valid_password_container" v-bind:class="{show_valid_password_container : valid_password }">

<svg width="100%" height="100%" viewBox="0 0 140 100">

<path class="tick" v-bind:class="{checked: valid_password }"

d="M10,50 l25,40 l95,-70" />

</svg>

</div>

</div>

 

<div class="lnu_container">

<p v-bind:class="{ lovercase_valid: contains_lovercase }">小写字母</p>

<p v-bind:class="{ number_valid: contains_number }">数字</p>

<p v-bind:class="{ uppercase_valid: contains_uppercase }">大写字母</p>

<p v-bind:class="{ uppercase_valid: contains_other }">特殊字符</p>

</div>

<input type="password" v-model="passwordAgain" placeholder="请再次输入新密码" />

<div style="marginTop:10px">

<p style="color:red;fontSize:10px">温馨提示:密码最小长度8个字符,必须包含数字大小写字母,特殊符号</p>

<el-button @click="passwordTpl = false">取消</el-button>

<el-button type="primary" @click="passwordTrue">确定</el-button>

</div>

css中:

/* 设置勾号大小 */

 

.el-checkbox__inner::after {

height: 13px;

left: 8px;

}


 

/* 设置选择框大小 */

 

.el-checkbox__inner {

width: 20px;

height: 20px;

}

 

input[type="password"]::-webkit-input-placeholder {

color: rgba(71, 87, 98, 0.8);

}

 

input[type="password"]::input-placeholder {

color: rgba(71, 87, 98, 0.8);

}

 

.input_container {

display: block;

margin: 0 auto;

width: 390px;

height: auto;

position: relative;

border-radius: 4px;

overflow: hidden;

margin-bottom: 10px;

}

 

input[type="password"] {

width: 320px;

height: auto;

border: 1px solid transparent;

background: #EEEEEE;

color: #475762;

font-size: 15px;

border-radius: 4px;

padding: 12px 5px;

overflow: hidden;

outline: none;

-webkit-transition: all .1s;

transition: all .1s;

}

 

input[type="password"]:focus {

border: 1px solid #2196F3;

}

 

.password_length {

padding: 2px 10px;

position: absolute;

top: 50%;

right: 35px;

-webkit-transform: translateY(-50%);

transform: translateY(-50%);

background: #FBD490;

color: rgba(71, 87, 98, 0.8);

border-radius: 4px;

font-size: 13px;

display: none;

-webkit-transition: all .1s;

transition: all .1s;

}

 

.valid_password_length {

background: #00AD7C;

color: rgba(255, 255, 255, 0.9);

}

 

.show_password_length {

display: block;

}

 

.lnu_container {

display: block;

margin: 10px auto;

width: 320px;

height: auto;

display: -webkit-box;

display: -ms-flexbox;

display: flex;

-webkit-box-pack: justify;

-ms-flex-pack: justify;

justify-content: space-between;

}

 

.lnu_container p {

width: 100px;

height: auto;

font-size: 12px;

line-height: 1.2;

text-align: center;

border-radius: 2px;

color: rgba(71, 87, 98, 0.8);

background: -webkit-linear-gradient(left, #00AD7C 50%, #eee 50%);

background: linear-gradient(to right, #00AD7C 50%, #eee 50%);

background-size: 201% 100%;

background-position: right;

-webkit-transition: background .3s;

transition: background .3s;

}

 

.lovercase_valid,

.number_valid,

.uppercase_valid {

background-position: left !important;

color: rgba(255, 255, 255, 0.9) !important;

}

 

.valid_password_container {

display: block;

margin: 10px auto;

border-radius: 4px;

position: absolute;

background: #00AD7C;

width: 20px;

height: 20px;

visibility: hidden;

opacity: 0;

right: 0px;

top: 0%;

}

 

.show_valid_password_container {

visibility: visible;

opacity: 1;

}

 

.tick {

width: 100%;

height: 100%;

fill: none;

stroke: white;

stroke-width: 25;

stroke-linecap: round;

stroke-dasharray: 180;

stroke-dashoffset: 180;

}

 

.checked {

-webkit-animation: draw 0.5s ease forwards;

animation: draw 0.5s ease forwards;

}

 

@-webkit-keyframes draw {

to {

stroke-dashoffset: 0;

}

}

 

@keyframes draw {

to {

stroke-dashoffset: 0;

}

}

 

 

data中:

passwordOld: "",

passwordAgain: "",

password: null,

password_length: 0,

typed: false,

contains_lovercase: false,

contains_number: false,

contains_uppercase: false,

valid_password_length: false,

valid_password: false,

contains_other: false

methods中:

p_len: function() {

this.password_length = this.password.length;

if (this.password_length > 7) {

this.valid_password_length = true;

} else {

this.valid_password_length = false;

}

 

if (this.password_length > 0) {

this.typed = true;

} else {

this.typed = false;

}

 

this.contains_lovercase = /[a-z]/.test(this.password); //小写

this.contains_number = /\d/.test(this.password); //数字

this.contains_uppercase = /[A-Z]/.test(this.password); //大写

var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")

// this.contains_other = /[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?] /.test(this.password);//特殊字符

this.contains_other = pattern.test(this.password)

if (this.contains_lovercase && this.contains_number && this.contains_uppercase && this.contains_other && this.valid_password_length) {

this.valid_password = true;

} else {

this.valid_password = false;

}

 

// Check if the password is valid

// if (this.contains_lovercase == true && this.contains_number == true) {

// this.valid_password = false;

// if (

// this.contains_uppercase == true &&

// this.valid_password_length == true

// )

// this.valid_password = true;

// } else {

// this.valid_password = false;

// }

},

passwordTplBtn() {

this.passwordOld = "";

this.passwordAgain = "";

this.password = "";

 

this.passwordTpl = true

},

baseEditBtn() {

this.baseEditPasswTpl = true

},

passwordTrue() {

if (!this.passwordOld) {

this.$message({

message: "请输入原密码",

type: "error"

})

return

}

if (!this.password || !this.passwordAgain || this.password != this.passwordAgain) {

this.$message({

message: "密码不一致!",

type: "error"

})

return

}

if (this.valid_password == false) {

this.$message({

message: "密码不符合要求请重新输入!",

type: "error"

})

return

} else {

var that = this

this.$axios

.post("xxxxxxxxxx", {

username: that.info.username,

userkey: that.passwordOld,

newuserkey: that.password

})

.then(function(data) {

console.log(data);

if (data.data.state == 1) {

that.$message({

message: "修改成功!",

type: "success"

});

that.password = {}

 

that.passwordTpl = false;

// that.searchBtn();

} else {

alert(data.data.message);

}

})

.catch(function(response) {

console.log(response);

});

}

},

注意适用的框架,如果不是vue element 可自行改动一下,,核心点在于正则的校验以及长度的校验

 

 

 

### 回答1: 你好!这是一个示例代码,用于在 Element UI 使用密码表单验证必须大小写字母数字和 @ 符号。 ```html <template> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password" autocomplete="off"></el-input> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { password: '' }, rules: { password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@])[\w@]{8,}$/, message: '密码必须包含大小写字母数字和 @ 符号', trigger: 'blur' } ] } } } } </script> ``` 在这个示例代码,我们使用了 Element UI 的 `el-form`、`el-form-item` 和 `el-input` 组件。`el-form` 组件用于包装表单元素,`el-form-item` 组件用于包装单个表单项,`el-input` 组件用于创建单行文本输入框。 在模板,我们使用了 `el-input` 组件的 `type` 属性来设置输入框为密码输入框,并使用 `v-model` 指令绑定到表单模型的 `password` 字段。 在脚本部分,我们在 `rules` 对象设置密码字段的验证规则。我们使用了 `pattern` 规则来匹配密码必须包含大小写 ### 回答2: Element UI 是一款基于 Vue.js 的组件库,可以用于快速构建用户界面。要实现密码表单验证必须包含大小写字母数字和@符号,我们可以使用 Element UI 提供的表单组件和验证规则来实现。 首先,我们需要在页面引入 Element UI 的样式和组件库,并创建一个表单: ```html <template> <el-form ref="passwordForm" :model="password" :rules="rules" label-width="100px"> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="password"></el-input> </el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form> </template> ``` 然后,在 Vue 实例定义密码的数据和验证规则: ```javascript <script> export default { data() { return { password: '', // 密码数据 rules: { // 验证规则 password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { pattern: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@])[\da-zA-Z@]{6,}$/, message: '密码必须包含大小写字母数字和@符号', trigger: 'blur' } ] } } }, methods: { submitForm() { this.$refs.passwordForm.validate((valid) => { // 验证表单 if (valid) { // 提交表单逻辑 console.log('Form submitted'); } else { console.log('Validation failed'); } }); } } } </script> ``` 在验证规则,我们使用正则表达式 `^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@])[\da-zA-Z@]{6,}$` 来匹配密码,其 `(?=.*\d)` 表示必须包含数字,`(?=.*[a-z])` 表示必须包含小写字母,`(?=.*[A-Z])` 表示必须包含大写字母,`(?=.*[@])` 表示必须包含@符号,`[\da-zA-Z@]{6,}` 表示密码数字大小写字母和@符号构成且长度至少为6。 最后,点击提交按钮,调用 `this.$refs.passwordForm.validate()` 方法进行表单验证,如果验证通过则可以执行提交表单的逻辑。 通过以上步骤,我们就可以使用 Element UI 来实现一个密码表单验证必须包含大小写字母数字和@符号的功能。 ### 回答3: Element UI是一款基于Vue.js的前端框架,可以方便地使用其提供的各种组件来实现密码表单的验证。以下是一个可供参考的示例代码: 首先,我们需要引入Element UI库和Vue.js,并在页面上引入相关的样式和脚本文件。 ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/element-ui/lib/index.js"></script> </head> <body> <div id="app"> <el-form ref="form" :rules="rules" :model="formData" label-width="120px"> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="formData.password" autocomplete="off"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </div> <script> const app = new Vue({ el: '#app', data() { return { formData: { password: '' }, rules: { password: [ { required: true, message: '密码不能为空', trigger: 'blur' }, { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@])/, message: '密码必须包含大小写字母数字和@符号', trigger: 'blur' } ] } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { alert('验证通过,可以提交表单'); } else { alert('验证失败,请检查输入'); } }); } } }); </script> </body> </html> ``` 在上述代码,我们首先创建了一个Vue实例,并定义了数据和验证规则。其,formData包含一个password字段来绑定密码输入框的值,而rules设置了password字段的验证规则。要求密码不能为空,并使用正则表达式`/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@])/`来匹配至少包含一个小写字母、一个大写字母、一个数字和一个@符号的密码。 在表单,我们使用了`<el-form>`和`<el-form-item>`组件来创建表单,并将rules和formData绑定到相应的属性上。当点击提交按钮,我们调用Elment UI提供的`validate`方法来触发表单的验证,并根据验证结果显示提示信息。 通过上述代码,我们可以实现一个基于Element UI的密码表单,验证用户输入必须包含大小写字母数字和@符号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值