Tråden för användbara reguljära uttryck

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2, 3, 4, 5, 6, 7  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Jörgen HP



Medlem i: 5990 dagar
Från: Landskrona
Status: Offline



#106463
Inlägg Skrivet: 2003-12-11 01:49      Ämne: Tråden för användbara reguljära uttryck Citera

Hejsan,

Det kan vara bra att samla reguljära uttryck som ofta används. Det är ju dumt att uppfinna hjulet på nytt varje gång. Jag börjar, ni fyller på. Smile

KOD:
1:
 
2:
// validera datum av formatet 0000-00-00
3:
/^(\d{4})-(\d{2})-(\d{2})$/
4:
 
5:
// validera datetime av formatet 0000-00-00 00:00:00
6:
/^(\d{4})-(\d{2})-(\d{2}) (\d\d):(\d\d):(\d\d)$/
7:
 
8:
// validera en epostadress
9:
^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)
10:
 
11:
// eftersom funktionen is_numeric() är lite lömsk kan det vara bra att kunna kolla så ett innehåll är numeriskt
12:
/^([0-9]+)$/
13:
 
14:
// byt tex [url=http://phpportalen.net]phpportalen[/url] till en länk
15:
$text = preg_replace("!\\[url=(.*?)\\](.*?)\\[/url\\]!i", "<a href=\"\\1\">\\2</a>", $text);
16:
$text = preg_replace("!\\[url](.*?)\\[/url\\]!i", "<a href=\"\\1\">\\1</a>", $text);
17:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Gustaw



Medlem i: 5635 dagar

Status: Offline



#106501
Inlägg Skrivet: 2003-12-11 10:37      Ämne: Citera

här kommer "min" validering utav epost kommer inte ihåg vart jag fick den ifrån..

^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,6}$
 

_________________

"Skulle ju vara roligt om just du kunde detta!" -Lärare
Till toppen på sidan
Visa användarprofil Skicka privat meddelande ICQ-nummer
bubach



Medlem i: 5832 dagar
Från: Lilla Edet (söder om Trollhättan)
Status: Offline



#106618
Inlägg Skrivet: 2003-12-11 15:22      Ämne: Citera

KOD:
1:
 
2:
Flyttal: passar in på enkla flyttal, t.ex "1.2" eller "-0.5":
3:
-?[0-9]+\.[0-9]+
4:
 
5:
Hexadecimala tal: passar in på hex-siffror (i C/C++ stil): t.ex "0xcafebabe":
6:
0x[0-9a-fA-F]+
7:
 
8:
Protokoll validering: passar in på web-baserade protokoll, såsom "http://", "ftp://" eller "https://":
9:
[a-z]+://
10:
 
11:
Epost validering: detta exempel kommer bara att passa in på korrekta epost-adresser,
12:
t.ex "user@host.se":
13:
 
14:
[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+
15:
 
16:
Epost validering #2: passar in på epost-adresser med ett namn innan,
17:
t.ex "Bo Ek <user@host.se>":
18:
("?[a-zA-Z]+"?[ \t]*)+\<[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+\>
19:
 
20:
passar in på alla teckensekvenser som varken innehåller bokstäver eller siffror:
21:
[^a-zA-Z0-9]+
22:
 
23:
 
 

_________________
http://bos.asmhackers.net - http://förklara.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
dojjan77



Medlem i: 5832 dagar

Status: Offline



#106849
Inlägg Skrivet: 2003-12-12 00:11      Ämne: Citera

Highlight av Full-Text Search
http://www.phpportalen.net/viewtopic.php?t=15590#97593

För att testa sina uttryck:
http://www.codemain.com/modules.php?name=Replace_Test

Det finns även ett prg. för regex:
The Regex Coach
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
bubach



Medlem i: 5832 dagar
Från: Lilla Edet (söder om Trollhättan)
Status: Offline



#106925
Inlägg Skrivet: 2003-12-12 10:49      Ämne: Citera

http://www.tarning.se/ertany/tools/regexp.html
 

_________________
http://bos.asmhackers.net - http://förklara.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
thr
Inaktiverad



Medlem i: 5909 dagar
Från: Göteborg
Status: Offline



#107146
Inlägg Skrivet: 2003-12-12 17:29      Ämne: Citera

Validering av en url:


preg_match("/^http\:\/\/([a-zA-Z]+\.)?[a-zA-Z0-9\-]\.[a-zA-Z]{,4}$/i",$string,$matches);


matchar:
http://doman.xxx

och

http://xxx.doman.xxx
 

_________________
» "I'll try being nicer if you try being smarter"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Rydberg



Medlem i: 5551 dagar

Status: Offline



#107214
Inlägg Skrivet: 2003-12-12 20:09      Ämne: Citera

bubach skrev:
KOD:
1:
 
2:
Epost validering: detta exempel kommer bara att passa in på korrekta epost-adresser,
3:
t.ex "user@host.se":
4:
[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+
5:
 


You wish...
Det perfekta regexet för att validera e-mail-adresser:
http://public.yahoo.com/~jfriedl/regex/email-unopt.pl (6K)
Iofs skrivet i Perl, men skillnaderna är inte så stora. Taget från boken "Mastering Regular Expressions" (1st ed.).

Adresser som faktiskt är tillåtna:

foo+bar@foobar.com
me@127.0.0.1:25
"Some one"@somedomain.com
mike&ike@candycompany.com
*@company.com

Du ser ju själv hur många av dem som detta forum känner igen Wink
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Get



Medlem i: 5703 dagar
Från: Ängelholm Inlägg: 1337
Status: Offline



#107218
Inlägg Skrivet: 2003-12-12 20:28      Ämne: Citera

En sida som har lite reg exp samt en reg exp testare, finns säkert nåtgot användbart. http://www.regexlib.com/ (Sidan ses bäst i IE Sad )
 

_________________
Matte och Fysik är det enda som räknas...
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger ICQ-nummer
Kimmy



Medlem i: 5700 dagar
Från: Skövde
Status: Offline



#107520
Inlägg Skrivet: 2003-12-13 19:07      Ämne: Citera

*mörda "INVALID SESSION!"*

Har gjort en funktion som gör om en hel del varianter av ubb-url-taggar till klickbara länkar...
(ja, jag vet att de troligtvis går att göra smidigare, speciellt (h?t?t?p?: ?\/?\/? ) )...

Frågan är nu bara hur jag får en vanlig http://www.aftonbladet/ och www.aftonbladet att också bli klickbara? Har försökt att inleda med ^(\[url\]).... (^- tecknet har jag uppfattat som NOT), men det vill sig inte... Så fort jag lägger in en regexp som ska konvertera ubb-lösa urler så sabbas alla andra...

KOD:
1:
<?php
2:
 
3:
   $text = "
4:
   1 - [url]www.aftonbladet.se/[/url]<br>
5:
   2 - [url]http://www.aftonbladet.se/[/url]<br>
6:
   3 - [url=www.aftonbladet.se/]Aftonbladet[/url]<br>
7:
   4 - [url=http://www.aftonbladet.se/]Aftonbladet[/url]<br>
8:
   5 - http://www.aftonbladet.se/  <-- Vill ha klickbar
9:
   6 - www.aftonbladet.se  <-- Vill ha klickbar
10:
   ";
11:
 
12:
   print ubburl1($text);
13:
 
14:
 
15:
function ubburl1($string){
16:
   $string = preg_replace('/\[url\](h?t?t?p?:?\/?\/?)(.*?)\[\/url\]/i', '<a href="http://\\2" target="_blank">\\1\\2</a>', $string);
17:
   $string = preg_replace('/\[url=(h?t?t?p?:?\/?\/?)(.*?)\](.*?)\[\/url\]/i', '<a href="http://\\2" target="_blank">\\3</a>', $string);
18:
   return $string;
19:
}
20:
 
21:
?>
 

_________________
AmigaOS4µA1-C G3(IBM 750FX)@800MHz.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6149 dagar
Från: Tingsryd
Status: Offline



#107536
Inlägg Skrivet: 2003-12-13 19:59      Ämne: Citera

Göra länk av URL-er i löpande text:
PHP:
1:
<?php
2:
 
3:
$text "En länk av http://www.phpportalen.net eller www.phpportalen.net/viewtopic.php?p=54259#54259 eller http://forum.phpportalen.net eller ftp://phpportalen.net , men inte forum.phpportalen.net";
4:
 
5:
$text preg_replace("/(?<=^|\s)(www\.([-a-zA-Z0-9_]+\.)*[-a-zA-Z0-9_]+\.[-a-zA-Z0-9_]{2,6}(\/[^\s]*)*)(?=\s|$)/""http://$1"$text);
6:
 
7:
$search "/(?<=^|\s)(http:\/\/|https:\/\/|ftp:\/\/)(([-a-zA-Z0-9_]+\.)*[-a-zA-Z0-9_]+\.[-a-zA-Z0-9_]{2,6}(\/[^\s]*)*)(?=\s|$)/";
8:
$replace "<a href=\"$1$2\">$2</a>"
9:
$text preg_replace($search$replace$text);
10:
 
11:
echo $text;
12:
 
13:
?>


Senast ändrad av Malte den 2004-05-04 00:19, ändrad totalt 1 gång
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
Get



Medlem i: 5703 dagar
Från: Ängelholm Inlägg: 1337
Status: Offline



#107704
Inlägg Skrivet: 2003-12-14 09:20      Ämne: Citera

Satte ihop grunderna för wiki sidan. Vet inte om vi skall ha en underkategori "Funktioner" till de reg exp som måste användas 2 eller 3 i följd för det skall fungera, som t ex Maltes och Kimmys.

http://www.phpportalen.net/wiki/index.php?page=Anv%E4ndbara+regulj%E4ra+uttryck
 

_________________
Matte och Fysik är det enda som räknas...
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger ICQ-nummer
mf22cs



Medlem i: 5707 dagar
Från: Skövde
Status: Offline



#107721
Inlägg Skrivet: 2003-12-14 13:19      Ämne: Citera

Ett uttryck för att kolla HTML-säkra färger, som jag hittade en gång... kommer inte ihåg var, men jag tänker m.a.o. inte ta cred för att jag har gjort den, utan tyckte bara den var trevlig att ha här... Smile

^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$

Fungerar för:
3-ställig decimal eller hexadecimal form och 6-ställig decimal eller hexadecimal form.

/Marcus
 

_________________
GREBBAN
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
hagman
Ex-Moderator



Medlem i: 6140 dagar
Från: Luvlieluspie
Status: Offline



#107865
Inlägg Skrivet: 2003-12-14 17:37      Ämne: Citera

Trevliga sidor:

http://www.regexp.org/
http://www.regexp.net/
http://directory.google.com/Top/Computers/Programming/Languages/Regular_Expressions/
http://zez.org/article/articleview/11/
 

_________________
haggeluring
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Rydberg



Medlem i: 5551 dagar

Status: Offline



#107875
Inlägg Skrivet: 2003-12-14 18:12      Ämne: Citera

preg_match('/^(https?):\/\/((?:[-a-z0-9]+\.)*)([-a-z0-9]+)\.(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z]{2})(\/[-a-z0-9_:@&?=+,.!\/~*%$]*)?$/i', $string, $matches);

Matchar endast HTTP- och HTTPS-adresser.
Här är ett exempel på vad det godkänner:
https://www3.web-man.example.com/index.jsp?page=10&query=how+to+write+regexs+that+work

Det kan säkert förbättras ytterligare, men jag orkar inte mer iaf Wink

Senast ändrad av Rydberg den 2003-12-14 19:11, ändrad totalt 2 gånger
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Kimmy



Medlem i: 5700 dagar
Från: Skövde
Status: Offline



#107884
Inlägg Skrivet: 2003-12-14 18:29      Ämne: Citera

What ever... Efter att ha meckat lite med de fina förslagen Malte gav mig så ser nu min funktion ut såhär... Samtliga regexpar är modifierade från andra som jag har hittat här på PHPportalen och på andra ställen på nätet... Ingen copyright...

KOD:
1:
<?php
2:
 
3:
   // Url-format som den klarar av...
4:
   $text = "
5:
   1 - [url]www.aftonbladet.se/[/url]<br>
6:
   2 - [url]http://www.aftonbladet.se/[/url]<br>
7:
   3 - [url=www.aftonbladet.se/]Aftonbladet[/url]<br>
8:
   4 - [url=http://www.aftonbladet.se/]Aftonbladet[/url]<br>
9:
   5 - http://www.aftonbladet.se <br>
10:
   6 - www.aftonbladet.se <br>
11:
12:
   8 - http://www.phpportalen.net/viewtopic.php?p=54259#54259
13:
   ";
14:
 
15:
   print ubburl($text);
16:
 
17:
 
18:
function ubburl($string){
19:
 
20:
   $string = preg_replace('/(?<=^|\s)(www\.([-a-zA-Z0-9_]+\.)*[-a-zA-Z0-9_]+\.[-a-zA-Z0-9_]{2,8}[^\s]*)(?=\s|$)/', '<a href="http://\\1" target="_blank">\\1</a>', $string);
21:
   $string = preg_replace('/(?<=^|\s)(http:\/\/|https:\/\/|ftp:\/\/)(([-a-zA-Z0-9_]+\.)*[-a-zA-Z0-9_]+\.[-a-zA-Z0-9_]{2,8}[^\s]*)(?=\s|$)/', '<a href="http://\\2">\\1\\2</a>', $string);
22:
   $string = preg_replace('/\[url\](h?t?t?p?:?\/?\/?)(.*?)\[\/url\]/i', '<a href="http://\\2" target="_blank">\\1\\2</a>', $string);
23:
   $string = preg_replace('/\[url=(h?t?t?p?:?\/?\/?)(.*?)\](.*?)\[\/url\]/i', '<a href="http://\\2" target="_blank">\\3</a>', $string);
24:
   return $string;
25:
}
26:
 
27:
?>
 

_________________
AmigaOS4µA1-C G3(IBM 750FX)@800MHz.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2, 3, 4, 5, 6, 7  Nästa
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic