Regex om te testen of een reeks begint met HTTP: // of HTTPS: //

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/iwerkte 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>

Other episodes