import { ref, watch } from 'vue'
export function useValidation() {
const input = ref<string>('');
const hasLowerCase = ref<boolean>(false);
const hasUpperCase = ref<boolean>(false);
const hasNumber = ref<boolean>(false);
const minLength = ref<boolean>(false);
watch(input, (newValue) => {
hasLowerCase.value = /[a-z]/.test(newValue);
hasUpperCase.value = /[A-Z]/.test(newValue);
hasNumber.value = /\d/.test(newValue);
minLength.value = newValue.length >= 8;
});
return {
input,
hasLowerCase,
hasUpperCase,
hasNumber,
minLength
}
}
import { defineComponent } from 'vue'
import { useValidation } from './useValidation'
export default defineComponent({
setup() {
const {
input,
hasLowerCase,
hasUpperCase,
hasNumber,
minLength
} = useValidation();
return {
input,
hasLowerCase,
hasUpperCase,
hasNumber,
minLength
}
},
render() {
return (
<div>
<input v-model={this.input} type="text" />
<p>Has lower case: {this.hasLowerCase ? 'Yes' : 'No'}</p>
<p>Has upper case: {this.hasUpperCase ? 'Yes' : 'No'}</p>
<p>Has number: {this.hasNumber ? 'Yes' : 'No'}</p>
<p>Min length 8: {this.minLength ? 'Yes' : 'No'}</p>
</div>
)
}
})