Ik probeer een regexp in te stellen die het begin van een tekenreeks zal controleren en als het een http://
of https://
bevat match het.
Hoe kan ik dat doen? Ik probeer het volgende dat niet werkt:
^[(http)(https)]://
Antwoord 1, Autoriteit 100%
Uw gebruik van []
is onjuist – Merk op dat []
een -karakterklasse aangeeft en daarom alleen maar één personage overeenkomt. De uitdrukking [(http)(https)]
Vertaalt naar “Match A (
, een h
, een t
, een t
, een p
, een )
, of een s
. ” (Dubbele tekens worden genegeerd.)
Probeer dit:
^https?://
Als u echt alternatief wilt gebruiken, gebruikt u deze syntaxis in plaats daarvan:
^(http|https)://
Antwoord 2, Autoriteit 12%
Case ongevoelig:
var re = new RegExp("^(http|https)://", "i");
var str = "My String";
var match = re.test(str);
Antwoord 3, Autoriteit 7%
^https?://
Mogelijk moet u echter aan de voorwaartse schuine stoffen ontsnappen, afhankelijk van de context.
Antwoord 4, Autoriteit 7%
^https?:\/\/(.*)
waarbij (.*)
overeenkomt met al het andere na https://
Antwoord 5, Autoriteit 4%
Dit zou moeten werken
^(http|https)://
Antwoord 6
^
voor het begin van het tekenreekspatroon,
?
voor 0 of 1 keer herhalen. dat wil zeggen, s?
skunnen 1 keer bestaan of hoeven helemaal niet te bestaan.
/
is een speciaal teken in regex, dus het moet worden ontsnapt met een 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
Antwoord 7
Dit werkt ook voor URL-gecodeerde strings.
^(https?)(:\/\/|(\%3A%2F%2F))
Antwoord 8
(http|https)?:\/\/(\S+)
Dit werkt voor mij
Geen regex-specialist, maar ik zal proberen de awnser uit te leggen.
(http|https) : Haakjes geven een capture-groep aan, “I” een OR-statement.
\/\/ : “\” staat speciale tekens toe, zoals “/”
(\S+) : Alles wat geen witruimte is tot de volgende witruimte
Antwoord 9
Deze hoofdletterongevoelig maken werkte niet in asp.net, dus heb ik elk van de letters gespecificeerd.
Dit is wat ik moest doen om het werkend te krijgen in een asp.net RegularExpressionValidator:
[Hh][Tt][Tt][Pp][Ss]?://(.*)
Opmerkingen:
(?i)
en het gebruik van/whatever/i
werkte waarschijnlijk niet omdat javascript niet alle hoofdlettergevoelige functionaliteit heeft toegevoegd- Oorspronkelijk had
^
aan het begin, maar dat deed er niet toe, maar de(.*)
deed het wel (expressie werkte niet zonder(.*)
maar werkte wel zonder^
) - hoefde niet te ontsnappen aan de
//
hoewel misschien een goed idee is.
Hier is de volledige reglarexpressievalidator als u het nodig hebt:
<asp:RegularExpressionValidator ID="revURLHeaderEdit" runat="server"
ControlToValidate="txtURLHeaderEdit"
ValidationExpression="[Hh][Tt][Tt][Pp][Ss]?://(.*)"
ErrorMessage="URL should begin with http:// or https://" >
</asp:RegularExpressionValidator>