Issue
I have a form as shown below in which I want the user to enter the url in the input box starting from http:// or https:// with one period to be present after subdomain. If the user doesn't do so it should say "Please match the requested format".
This is what I have tried. The following code takes only from https not http.
<label for="url">Enter an https:// URL:</label>
<input type="url" name="url" id="url" placeholder="https://example.com" pattern="https://.*" size="30" required> <!-- Line A -->
The pattern which I want is:
In the first 2 cases, user doesn't type www in the input box and in the last 2 cases user types www In the above four urls, it has atleast one period after subdomain and it starts from http or https.
In short, I want the following 2 requirements to be met when user enters the url in the input box.
- It should start from http or https.
- It should have at-least one period after sub-domain.
Problem Statement:
I am wondering what changes I should make in the pattern above at Line A so that it meets my requirements.
Solution
Can probably use url validation segments after the http://
<input type="url"
name="url"
id="url"
placeholder="https://example.com"
pattern="[Hh][Tt][Tt][Pp][Ss]?:\/\/(?:(?:[a-zA-Z\u00a1-\uffff0-9]+-?)*[a-zA-Z\u00a1-\uffff0-9]+)(?:\.(?:[a-zA-Z\u00a1-\uffff0-9]+-?)*[a-zA-Z\u00a1-\uffff0-9]+)*(?:\.(?:[a-zA-Z\u00a1-\uffff]{2,}))(?::\d{2,5})?(?:\/[^\s]*)?"
required>
Expanded
[Hh] [Tt] [Tt] [Pp] [Ss]? :\/\/
(?:
(?: [a-zA-Z\u00a1-\uffff0-9]+ -? )*
[a-zA-Z\u00a1-\uffff0-9]+
)
(?:
\.
(?: [a-zA-Z\u00a1-\uffff0-9]+ -? )*
[a-zA-Z\u00a1-\uffff0-9]+
)*
(?:
\.
(?: [a-zA-Z\u00a1-\uffff]{2,} )
)
(?: : \d{2,5} )?
(?: \/ [^\s]* )?
Answered By - user12097764
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.