2012-04-13 13 views
-1

ich die folgende Regex, die URLs versucht zu entsprechen:Wie kann ich diese Regex für eine URL spezifischer machen?

/((http|https):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))/g 

Wie kann ich diese Regex ändern, um nur URLs aus einer einzelnen Domäne überein?

Zum Beispiel möchte ich nur URLs übereinstimmen, die mit http://www.google.com beginnen?

Dies sollte meinen regex zu vereinfachen, aber ich bin zu viel von einem regex Noob, um es arbeitet (nach all den Jahren ...)

+0

Denken Sie daran, dass die meisten RE-Motoren kennen '(?: A | b) '(oder ähnlich), um Alternativen zu vergleichen, ohne eine unnötige Gruppe zu erzeugen. Zusätzlich könnten Sie 'https?' Verwenden, um sowohl 'http' als auch' https' zu finden. – hochl

+0

Netter Tipp über 'https?'. – eoinoc

Antwort

1

Haben Sie schreiben, dass RegEx? Ich weiß nicht, was es zu tun versucht, aber es stimmt sicherlich nicht mit URLs überein. Hier ist etwas, das es entspricht:

http:@@#[email protected]?~ 

die ich bin mir ziemlich sicher, ist keine gültige URL.

Sie sollten RegEx nicht verwenden, um URLs wie diese zu finden. Sie haben nicht gesagt, welche Sprache Sie arbeiten in, aber verwenden, was ihr Äquivalent von urlparse ist ..

Hier ist eine wichtige Frage: How do you validate a URL with a regular expression in Python?

+0

Hi Karl, es ist Javascript in dem ich arbeite. Es ist nicht so, dass ich eine URL spezifisch validiere. Bei einem Stück Text versuche ich alle URLs zu finden, an denen ich interessiert bin (um eine Zeichenfolge anhängen zu können). – eoinoc

+1

Wenn Sie nicht an einer Validierung interessiert sind, entspricht dies einer URL, die wie folgt aussieht: "https?: // (?: Www \.) Google \ .com [^] *' zum Anhängen an ... –

Verwandte Themen