I'm trying to set a regexp which will check the start of a string, and if it contains either http://
or https://
it should match it.
How can I do that? I'm trying the following which isn't working:
^[(http)(https)]://
I'm trying to set a regexp which will check the start of a string, and if it contains either http://
or https://
it should match it.
How can I do that? I'm trying the following which isn't working:
^[(http)(https)]://
Your use of []
is incorrect -- note that []
denotes a character class and will therefore only ever match one character. The expression [(http)(https)]
translates to "match a (
, an h
, a t
, a t
, a p
, a )
, or an s
." (Duplicate characters are ignored.)
Try this:
^https?://
If you really want to use alternation, use this syntax instead:
^(http|https)://
Case insensitive:
var re = new RegExp("^(http|https)://", "i");
var str = "My String";
var match = re.test(str);
^https?://
You might have to escape the forward slashes though, depending on context.
^
for start of the string pattern,
?
for allowing 0 or 1 time repeat. ie., s?
s can exist 1 time or no need to exist at all.
/
is a special character in regex so it needs to be escaped by a backslash \/
/^https?:\/\//.test('https://www.bbc.co.uk/sport/cricket'); // true
/^https?:\/\//.test('http://www.bbc.co.uk/sport/cricket'); // true
/^https?:\/\//.test('ftp://www.bbc.co.uk/sport/cricket'); // false
(http|https)?:\/\/(\S+)
This works for me
Not a regex specialist, but i will try to explain the awnser.
(http|https) : Parenthesis indicates a capture group, "I" a OR statement.
\/\/ : "\" allows special characters, such as "/"
(\S+) : Anything that is not whitespace until the next whitespace
Making this case insensitive wasn't working in asp.net so I just specified each of the letters.
Here's what I had to do to get it working in an asp.net RegularExpressionValidator:
[Hh][Tt][Tt][Pp][Ss]?://(.*)
Notes:
(?i)
and using /whatever/i
didn't work probably because javascript hasn't brought in all case sensitive functionality^
at beginning but it didn't matter, but the (.*)
did (Expression didn't work without (.*)
but did work without ^
)//
though might be a good idea.Here's the full RegularExpressionValidator if you need it:
<asp:RegularExpressionValidator ID="revURLHeaderEdit" runat="server"
ControlToValidate="txtURLHeaderEdit"
ValidationExpression="[Hh][Tt][Tt][Pp][Ss]?://(.*)"
ErrorMessage="URL should begin with http:// or https://" >
</asp:RegularExpressionValidator>