<html>
<head>
<script src="https://unpkg.com/vue@3.2.12/dist/vue.global.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<div id="app">
<h3>Vue Js Validate URL</h3>
<input v-model="url" />
<button @click="validateUrl">Validate</button>
<p v-if="urlError" class="error">{{ urlError }}</p>
</div>
<script type="module">
const app = Vue.createApp({
data() {
return {
url: '',
urlError: ''
};
},
methods: {
validateUrl() {
// Regular expression to validate the URL
const urlPattern = /^(ftp|http|https):\/\/[^ "]+$/;
if (this.url === '') {
this.urlError = 'URL is required.';
} else if (!urlPattern.test(this.url)) {
this.urlError = 'Invalid URL format.';
} else {
this.urlError = '';
}
}
}
});
app.mount('#app');
</script>
<style>
#app {
text-align: center;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.24);
width: 600px;
margin: 0 auto;
transition: transform 0.3s ease;
}
h3 {
font-size: 24px;
margin-bottom: 20px;
}
input {
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
width: 300px;
margin-bottom: 10px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
.error {
color: red;
margin-top: 10px;
}
</style>
</body>
</html>