Regex, dubbele tekens vermijden?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer/WPF/ ASP.NET/ OOP/ Utrecht/ 4.00

Ben jij een C# Ontwikkellaar thuis in logistieke processen en werk je graag aan de (web) applicaties die hierbij komen kijken? Heb je kennis van ASP.NET, WPF en/of WCF en OOP? Ga jij (inter)nationale C# ontwikkelprocessen niet uit de weg? Kijk dan snel verder! Functieomschrijving Ben jij een C# Ontwikkellaar thuis in logistieke processen en werk je graag aan de (web) applicaties die hierbij komen kijken? Heb je kennis van ASP.NET, WPF en/of WCF en OOP? Ga jij (inter)nationale C# ontwikkelprocessen niet uit de weg? Kijk dan snel verder! Ontwikkelen van nieuwe en bestaande operationele (logistieke) software in C# .NET;

Bekijk vacature »

Medior .Net developer Logistiek Opleidingsmogelijk

Wat ga je doen als Medior .Net developer? Jij gaat als medior .Net developer in Utrecht werken bij een bedrijf dat is gespecialiseerd is in het ontwerpen van software voor olieopslag en handel. Denk hierbij aan klanten die handelen in mineralen, chemicaliën en voedselwaren. De software waar jij aan gaat werken zorgt ervoor dat logistieke processen van klanten efficiënter werken. Deze software zal gemaakt worden met behulp van .Net, C#, MVC en Javascript. Wat wordt jou geboden? Naast een salaris vanaf €3650,- wordt jou het volgende geboden: * Werken bij een dynamisch bedrijf; * Persoonlijk ontwikkelingsplan afgestemd op jouw ambities;

Bekijk vacature »

Junior full-stack .NET developer gezocht

Organisatie Voor een van mijn businesspartners uit de regio van Arnhem ben ik op zoek naar een junior C# .NET developer. Dit bedrijf maakt maatwerksoftware voor klanten uit diverse sferen. Van banken tot luchtvaartmaatschappijen en van overheden tot scholen. Denk hierbij aan pensioensportalen, websites, betalingsmodules en ERP systemen. In deze groeiende organisatie is er altijd ruimte voor plezier. Dit omschrijft dan ook hoe de bedrijfscultuur in elkaar zit. Het is een erg platte organisatie, zonder hiërarchie. Samen met 14 collega’s werk je, in een echt softwarehuis, dagelijks in verschillende teams aan verschillende opdrachten van verschillende opdrachtgevers. Elke dag is hierdoor

Bekijk vacature »

.Net Developer / Ontwikkelaar / C# / VB / Regio Ro

Functieomschrijving Heb jij een aantal jaar ervaring als .NET Developer en ben je toe aan de volgende stap? Wil jij jouw ideeën over development nu écht kunnen toepassen in de praktijk? Dan is deze rol bij een internationaal bedrijf in Rotterdam wellicht jouw ideale baan! Het ontwerpen van nieuwe functionaliteiten; Herschrijven van bestaande applicaties; Meedraaien in grote, uitdagende projecten; Communiceren met de business; Externe programmeurs aansturen. Functie-eisen HBO werk- en denk niveau; Minimaal 3 jaar ervaring als Software Engineer; Kennis van C# en VB (in elk geval één van de twee); Ervaring met SQL Server en het schrijven van high

Bekijk vacature »

Back-end medior C# ASP.NET developer in regio Cuij

Organisatie Voor een van mijn business partners uit de regio van Cuijk ben ik op zoek naar een C# back-end developer. Het bedrijf bestaat 12 jaar en is begonnen als websitebouwer. Inmiddels maken ze namelijk naast websites en webshops ook ERP systemen, portals voor samenvoeging van verschillende systemen en een aantal eigen producten. Daarnaast focussen ze zich veel op internetmarketing. Voor zowel het MKB als de groot zakelijke markt leveren ze maatwerk software-oplossingen. Samen met hun andere vestiging in Oost-Europa bedienen ze één klantenbestand. Het is een informeel bedrijf, waar je veel vrijheid krijgt, maar tegelijkertijd wordt er ook heel

Bekijk vacature »

Traineeship junior software developer

Zoek jij de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van 2 tot 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Na de opleidingsperiode start je bij één van onze

Bekijk vacature »

PYTHON Lead Developer Omg. Eindhoven

Voor een internationale organisatie waarvan het hoofdkantoor gevestigd is in de omgeving Eindhoven, ben ik op zoek naar een Lead Python developer. Dit bedrijf is makkelijk bereikbaar per auto en openbaar vervoer. Deze informele organisatie bestaat ondertussen al bijna 60 jaar en vandaag de dag zijn zij de marktleider binnen deze branche. Met ruim 200 medewerkers op het hoofdkantoor en meer dan 1000 collega’s verspreidt over alle andere vestigingen, kan je wel zeggen dat het een groot en snelgroeiend bedrijf is. Ondanks de grootte van dit bedrijf, hangt er een warm en familiare gevoel binnen het bedrijf. Zij besteden veel

Bekijk vacature »

C# developer voor distributed systems (.NET C#, AS

Ben je een C# developer met een oplossingsgerichte mentaliteit en op zoek naar een veelzijdige baan binnen een kleinschalig dynamisch bedrijf, waar je mee kunt denken in het groter geheel? Waar je met mensen komt te werken die betrokken zijn en een gemeenschappelijk gevoel van verantwoordelijkheid hebben? En waar je werkt aan schaalbaarheidsuitdagingen zodat jouw software grote hoeveelheden data kan verwerken? Nieuwsgierig? Lees dan verder! Voor een Rotterdams bedrijf zijn we op zoek naar een enthousiaste, en met name leergierige, full stack developer of een web developer die graag full stack wil worden. Het bedrijf biedt geavanceerde technische oplossingen die

Bekijk vacature »

Software Developer (m/w)

Software Developer Location: Heidelberg, Germany Staff Category: Staff Member Contract Duration: 3 years (renewable) Grading: 6, 7 or 8, depending on experience and qualifications Closing Date: 11 November 2018 Reference Number: HD_01388 We are looking to recruit an enthusiastic Java developer to join the software development team in EMBL IT Services. IT Services operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and for the laboratory.s sites in Barcelona and Rome. Your core duty will be to service the increasing reliance on web based applications. Within the development team, you will be responsible for developing and

Bekijk vacature »

Senior Game/Unity Developer gezocht voor internati

Organisatie & Afdeling Voor één van de grootste organisaties in Nederland, die haar focus heeft op VR, AR en Games, zijn wij op zoek naar een Senior Unity Developer die het gaaf vindt om voor internationale organisaties mooie projecten te maken. Dit bedrijf bestaat meer dan 12 jaar en heeft in die tijd meer dan 60 games ontwikkeld. Sommige games zijn meer dan 240 miljoen keer gedownload. Sinds een jaar zijn ze overgenomen door een Amerikaans bedrijf en daarbij is de klantenkring uitgebreid met verschillende A-merken. Door deze overname zit deze partij op dit moment in een verandering. Door deze

Bekijk vacature »

Senior Backend Developer – Digital Agency

Organisatie: Deze Digital Agency in Amsterdam is met name gericht op het development/techniek gedeelte. Aangezien IT het hart van het bedrijf is, hebben zij een team van ruim 20 developers zitten met allemaal een liefde voor hun vak. Ze zijn enorm trots op hun klanten en de variatie hierin. Denk hierbij aan maatschappelijk verantwoorde projecten van Greenpeace en Squla. Maar ook de grotere namen zoals een Samsung, ING, Jumbo en Rijksoverheid. Het bedrijf is gelegen in het centrum van Amsterdam op maar 10 minuten loopafstand van het centraal station. De voertaal binnen het bedrijf is Nederlands en het beschikken over

Bekijk vacature »

Java Developer - Security Systems - Omgeving Ensch

Nieuwe vacature voor een gedreven Java Ontwikkelaar die graag werkt aan het ontwikkelen van innovatieve oplossingen voor gecompliceerde problemen. In deze specifieke rol richt je je als Java Ontwikkelaar op het ontwikkelen van Security Software. We hebben een geweldige klant die op zoek is naar een Java Ontwikkelaar. Als je ervaring hebt met het werken in Java 8 en passie hebt voor innovatieve oplossingen met de nieuwste tech stack, kan dit de juiste mogelijkheid voor je zijn. Deze leider op het gebied van innovatieve software gericht op functionele IT-oplossingen in de omgeving Enschede heeft een fantastische vacature voor een: Java

Bekijk vacature »

Fullstack Ontwikkelaar (PHP-Symfony4-Nodejs-Angula

Wil je werken in een professionele omgeving met enthousiaste, gemotiveerde collega’s en je develop-skills verder ontwikkelen? Dan is dit een baan voor jou! Organisatie: Deze kleine (15 werknemers in totaal), maar zeer ambitieuze organisatie heeft een Cloud software ontwikkeld om organisaties beter te managen. Vanuit hun gezellige kantoorpand werken zij samen in verschillende teams (development, sales, servicedesk). Het hart van het bedrijf is hun eigen ontwikkelde Software product. Binnen hun software ligt er voor iedere developer een uitdaging om z’n kennis te verdiepen en te verbreden, of je nu een junior bent of al jaren meedraait in de development-wereld. Er

Bekijk vacature »

Als (Lead) developer specificaties omzetten tot pr

De organisatie: Onze klant heeft meer dan 10 jaar ervaring in het ontwikkelen van software bij uiteenlopende klanten. Zij hebben zich gespecialiseerd in het opbouwen van teams in het buitenland en bieden hierdoor een unieke combinatie. Naast het fijt dat de oprichters hier nog vaak te vinden zijn hebben ze ook een eigen opleidingsinstituut opgericht. Inmiddels werken zij geruime tijd voor mooie klanten als Heineken, Reddata en Rijkswaterstaat. De producten variëren van Web Applicaties tot Mobile apps met achterliggende algoritmes. Medewerkers kunnen hier echt zichzelf zijn en ontwikkelen, de druk is soms hoog maar ze gaan de uitdaging ten alle

Bekijk vacature »

Senior PHP Developer – Rotterdam- Full-Servi

Voor mijn business partner uit Rotterdam ben ik momenteel op zoek naar een Senior PHP Developer met minimaal 5 jaar ervaring. Mijn opdrachtgever is een full-service internetbureau die al 15 jaar sterk aanwezig is op de markt. Het bedrijf heeft zelf een online platform ontwikkeld, waarbij het mogelijk is voor verschillende bedrijven hun eigen webshop te ontwikkelen. Het systeem is zodanig ontwikkeld dat gebruiksgemak een belangrijk focus en telkens wordt doorontwikkeld. Buiten het platform wat zij hebben ontwikkeld en dat veel aandacht nodig heeft, heeft dit bedrijf ook een team aan Developers die continu maatwerk projecten oppakken. Momenteel is het

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

26/12/2016 16:17:01
Quote Anchor link
Hallo,

Een vraagje ... is het mogelijk (en zo ja hoe) om via een regex dubbele tekens af te keuren?

Wat ik graag zou willen is dat ik bijv. kan aangeven dat er letters en cijfers gebruikt mogen worden, en spaties, punten en streepjes. Dan krijg je zoiets:

pattern="^[- .0-9A-Za-z]$"

Maar ik wil niet dat men dubbele spaties, streepjes en punten kan gebruiken.

Dus dit mag wel: Ozzie.PHP-Hulp
Maar dit niet: Ozzie..PHP--Hulp

Is het mogelijk om in een regex aan te geven dat er alleen 'enkele' streepjes, spaties en punten gebruikt mogen worden?
 
PHP hulp

PHP hulp

17/10/2018 12:54:23
 
Adoptive Solution

Adoptive Solution

26/12/2016 18:26:06
Quote Anchor link
Deed dit :

http://www.google.nl/search?q=php+regex+remove+duplicate+characters

Deze bevat de oplossing :

http://stackoverflow.com/a/10342485

Paste het wat aan :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$n
= 'Ozzie..PHP--Hulp';

echo '<p>' . $n . '</p>';

$n = preg_replace('/([\.-\s])\\1+/', '$1', $n);

echo '<p>' . $n . '</p>';

?>
Gewijzigd op 26/12/2016 18:27:31 door Adoptive Solution
 
- SanThe -

- SanThe -

26/12/2016 18:37:22
Quote Anchor link
Adoptive Solution op 26/12/2016 18:26:06:
Paste het wat aan :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$n
= 'Ozzie..PHP--Hulp';

echo '<p>' . $n . '</p>';

$n = preg_replace('/([\.-\s])\\1+/', '$1', $n);

echo '<p>' . $n . '</p>';

?>


Bron output hier: <p>Ozzie..PHP--Hulp</p><p></p>
 
Adoptive Solution

Adoptive Solution

26/12/2016 18:56:20
Quote Anchor link
Grappig, op m'n Mac doet ie het wel, op m'n NAS niet.

Wel, Ozzie heeft vastwel een 'goed basisboek' waar het in staat hoe je het doet.

Toevoeging op 26/12/2016 19:30:22:

Ik heb geen goed boek, moest dus even in mijn eigen archief bladeren.

Dit moet het wel goed doen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$string
= 'Oz    zie.....PHP----Hulp';

echo '<p>' . $string . '</p>' . PHP_EOL;

$patterns = array();
$patterns[0] = '/\.+/';
$patterns[1] = '/-+/';
$patterns[2] = '/\s+/';

$replacements = array();
$replacements[0] = '.';
$replacements[1] = '-';
$replacements[2] = ' ';

echo '<p>' . preg_replace($patterns, $replacements, $string) . '</p>' . PHP_EOL;

?>


http://adoptive.esy.es/remove-double.php
 
Ozzie PHP

Ozzie PHP

26/12/2016 21:25:48
Quote Anchor link
Ik geloof dat jullie me verkeerd begrepen hebben :-s

De vraag is hoe ik dus een negatieve match krijg. Er hoeft niks vervangen te worden. De regex moet simpelweg niet slagen als er .. of -- of dubbele spatie in staat.

Ik denk dat ik het maar ga oplossen met lookaheads.

Toevoeging op 26/12/2016 21:27:04:

PS

>> Wel, Ozzie heeft vastwel een 'goed basisboek' waar het in staat hoe je het doet.

Wat was de bedoeling van die opmerking?
 
Wouter J

Wouter J

26/12/2016 22:44:51
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

$pattern
= '/
  ^
  (?:
    [[:alnum:]] # letters + cijfers
    |
    (?:
      ([.\s-])  # punt, spatie en streepje
      (?!\1)    # niet gevolgt door hetzelfde teken
    )
  )+
  $
/x'
;

$tests = ['Ozzie..PHP--Hulp', 'Ozzie.PHP-Hulp', 'a.b.c.'];

foreach ($tests as $t) {
    if (preg_match($pattern, $t)) {
        echo 'OK '.$t.PHP_EOL;
    }
else {
        echo 'NO '.$t.PHP_EOL;
    }
}


?>


Dit staat bijv. "Ozzie.-PHP-Hulp" wel toe, als dat ook niet mag wordt de pattern:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$pattern
= '/
  ^
  (?:
    [[:alnum:]]     # letters + cijfers
    |
    (?:
      [.\s-]        # punt, spatie en streepje
      (?:[^.\s-]|$) # gevolgt door of een *niet* punt, spatie, streepje of het einde van de string
    )
  )+
  $
/x'
;
?>
Gewijzigd op 26/12/2016 22:45:09 door Wouter J
 
Ozzie PHP

Ozzie PHP

26/12/2016 23:22:23
Quote Anchor link
Thanks Wouter, daar moet ik wel wat mee kunnen!

Wat doet nu precies die "?:" ?

Toevoeging op 26/12/2016 23:32:02:

Dit stukje ?:[[:alnum:]] werkt bij mij alleen als ik het zo doe

?:[0-9A-Za-z]

Dus zonder die dubbele blokhaken. Heb je toevallig enig idee waarom? Ook zie ik geen verschil als ik in dit stukje ?: weglaat. Het resultaat lijkt dan gewoon hetzelfde te zijn.

(PS ik gebruik het als een pattern in een html5 input-veld)
 
Ben van Velzen

Ben van Velzen

27/12/2016 00:01:07
Quote Anchor link
?: zorgt ervoor dat de capture group niet wordt opgeslagen, zie de resulterende array wanneer je preg_match gebruikt.
 
Ozzie PHP

Ozzie PHP

27/12/2016 00:03:49
Quote Anchor link
Ben van Velzen op 27/12/2016 00:01:07:
?: zorgt ervoor dat de capture group niet wordt opgeslagen, zie de resulterende array wanneer je preg_match gebruikt.

Wat is daarvan precies (wel of juist niet) het nut?

Ik wil dus enkel valideren (html5 input pattern) of iemand iets geldigs heeft ingevuld.
 
Wouter J

Wouter J

27/12/2016 00:04:56
Quote Anchor link
Quote:
(PS ik gebruik het als een pattern in een html5 input-veld)

Dat verklaard het [[:alnum:]] stukje :) HTML5 input velden gebruiken de JavaScript regex engine. Deze ondersteund geen speciale character classes zoals [:alnum:] (wat gewoon een short-hand is voor [\w\d] in PHP).

Quote:
Wat doet nu precies die "?:" ?

Normaal gesproken wordt een capture group "gecaptured" (opgeslagen). Dit betekend dat we er later weer naar kunnen referreren doormiddel van zijn index. Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
preg_match('/(a)(b)(c)/', 'abc');
/* Capture groups:
 1: a
 2: b
 3: c */

Deze indexen kun je dan weer gebruiken in de regex. Bijvoorbeeld /([a-z])\1/ zal 2 keer dezelfde letter achter elkaar matchen.

Dit opslaan van de capture group kost wat geheugen en wat tijd. Door (?:...) ipv (...) te gebruiken vertel je dat de capture group niet opgeslagen moet worden. Op deze manier wordt je regex iets sneller. Dit is waarschijnlijk vooral pas merkbaar bij grote hoeveelheden matchen, dus in dit geval een grote lengte van de string.

Zie ook http://www.regular-expressions.info/brackets.html , een hele handige site voor informatie over alle syntaxen in regex en het optimaliseren daarvan.
Gewijzigd op 27/12/2016 00:07:01 door Wouter J
 
Ozzie PHP

Ozzie PHP

27/12/2016 00:16:24
Quote Anchor link
Ah zo ... dan kan ik dus beter overal die ?: toepassen. Weer wat geleerd :-)

Nog een laatste vraag.

Nog even uitgaande van die voorgaande regex ...

Dit stukje (?:[^.\s-]|$) vond ik op zich wel mooi ... dat je dus ook niet bijv. .- kunt krijgen. Het nadeel is nu echter dat je ipv .- wel bijv. een vreemd teken kunt zetten bijv .* wat ik eigenlijk niet wil. Is dat nog (makkelijk) op te lossen?

Idealiter zou ik (ongeveer) dit willen:

BEGIN en EINDIG de string met een letter of getal. Daartussen zijn de enige toegestane karakters letters en cijfers en de volgende vreemde tekens: spatie streepje punt ... maar die mogen niet na elkaar volgen, met als enige uitzondering een punt die wél gevolgd mag worden door een spatie. Heb je daar nog een tip voor hoe ik dat moet aanpakken?

Dit mag:
Ozzie PHPhulp
Ozzie.PHP-hulp
Ozzie. PHP-hulp

Maar dit mag niet:
.Ozzie (begint niet met een letter of getal)
Ozzie- (eindigt niet met een letter of getal)
Ozzie.-PHPhulp (punt en streepje na elkaar mag niet)
 
Wouter J

Wouter J

27/12/2016 00:39:42
Quote Anchor link
Oh, maar die begin en eindig met een letter of getal maakt t een stuk makkelijker:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/^[a-zA-Z0-9](?:[a-zA-Z0-9]|[.\s\-a-zA-Z0-9][a-zA-Z0-9])*$/

Oftewel: Een alnum, gevolgd door of een alnum of een speciaal teken die op zijn minst weer wordt gevolgd door een alnum. En dat laatste dan 0 of meer keer. Misschien iets leesbaarder in een parsing grammer syntax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
String         <- Alnum AlnumOrSpecial*
AlnumOrSpecial <- Alnum / (Special Alnum)
Alnum          <- [a-zA-Z0-9]
Special        <- [-. ]
Gewijzigd op 27/12/2016 00:40:24 door Wouter J
 
Ozzie PHP

Ozzie PHP

27/12/2016 00:59:33
Quote Anchor link
Ah, zo ja. Nice! Dat is inderdaad precies wat ik bedoelde. Thanks very much :-)

Toevoeging op 27/12/2016 01:32:24:

PS

Kan ik dit

(?:[a-zA-Z0-9]|[.\s\-a-zA-Z0-9][a-zA-Z0-9])*

ook vervangen door

(?:[.\s\-]?[a-zA-Z0-9])*

En zo ja, is het een beter dan het ander of maakt dat niks uit?
 
Wouter J

Wouter J

27/12/2016 10:36:12
Quote Anchor link
Ja, dat kun je veranderen. En ik zou zeggen dat de eerste wellicht wat sneller zou zijn, aangezien de tweede een geneste optional quantifier heeft (? en *). Hierdoor moet de engine in het geval van een non-match veel backtracking toepassen, wat het geheel trager zou maken.

Maar voor simpele HTML5 input validatie is dat allemaal over-optimalisatie. En zou dan wel voor jouw optie kiezen, een stuk leesbaarder naar mijn idee.
 
Ozzie PHP

Ozzie PHP

27/12/2016 12:22:30
Quote Anchor link
Wouter, thanks.

Ik wil eigenlijk toch terug naar de eerste variant die jij had voorgesteld. Dus geen dezelfde vreemde tekens achter elkaar, maar verschillende vreemde tekens achter elkaar mag wel.

Dus niet 2x een spatie achter elkaar maar een punt en een spatie mag bijvoorbeeld wel.

Ik vond dit zelf wel een hele toffe oplossing van jou:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
([.\s-])  # punt, spatie en streepje    
(?!\1)    # niet gevolgt door hetzelfde teken

Het enige nadeel is nu dat ik na een punt, streepje of spatie een gek teken kan zetten. Je zou dus bijvoorbeeld .* kunnen doen, terwijl een sterretje niet is toegestaan.

Wat ik dus zou willen, is dit:

We hebben vreemde tekens: [.\s-]
En cijfers en letters: [0-9a-zA-Z]

Cijfers en letters mogen gewoon achter elkaar. Geen enkel probleem.

Maar een vreemd tegen moet gevolgd worden door óf een cijfer of letter óf een ANDER vreemd teken.

Is dat op een handige manier te doen? Het mooiste zou zijn als je kunt zeggen ... een vreemd teken moet gevolgd worden door [.-\s0-9a-zA-Z] maar dan zonder datzelfde vreemde teken. Ik kan wel voor ieder vreemd teken een aparte groep maken waar dat teken door gevolgd moet worden, maar dan wordt de regex zo enorm lang (in de praktijk zijn het zelfs nog een paar meer vreemde tekens).

Maar goed, dus even samengevat.

Cijfers en letters mogen elkaar gewoon opvolgen, maar een vreemd teken mag niet door datzelfde vreemde teken worden gevolgd, maar wel door een ander vreemd teken of een cijfer of letter.

Weet je daar nog iets voor? Dat zou geweldig zijn.
 
Wouter J

Wouter J

27/12/2016 16:28:35
Quote Anchor link
Look arounds zijn zero-length assertions. Deze worden dus wel gematched, maar zorgen dus niet voor het consumen van de gematchde string. Dus /^(?:(\w)(?!\1))+$/ zal een string matchen als deze volledig bestaat uit woord tekens (de \w) terwijl deze niet opgevolgd worden door hetzelfde teken (het (?!\1) gedeelte).

Dus ([.\s-])(?!\1) matched alleen de punt, spatie of streepje. Niet het teken daarna (het controleert alleen of het teken daarna niet hetzelfde teken is). Dus /^(?:[a-zA-Z0-9]|([.\s-])(?!\1|$))+$/ zal moeten werken naar mijn idee.

https://jsbin.com/jabiloxoju/edit?js,output
 
Ozzie PHP

Ozzie PHP

27/12/2016 16:38:21
Quote Anchor link
Dat ziet er tof uit en daar moet ik wel mee vooruit kunnen.

Ik snap alleen niet waarom "abc." een negatieve match oplevert. Die zou toch moeten kloppen?
 
Wouter J

Wouter J

27/12/2016 17:54:50
Quote Anchor link
De lookahead is (?!\1|$) oftewel: Niet \1 of $. Dus niet het einde van de string. Dat is precies wat je wou, toch?
 
Ozzie PHP

Ozzie PHP

27/12/2016 18:00:51
Quote Anchor link
Ah zo ... misschien dat ie toch wel op een vreemd teken mag eindigen ... maar dan kan ik gewoon |$ weghalen. Dat komt wel goed :-)

Thanks Wouter. Je hebt me weer wat bijgeleerd! :-)
 
Thomas van den Heuvel

Thomas van den Heuvel

28/12/2016 16:25:27
Quote Anchor link
In plaats van a-zA-Z zou je ook simpelweg a-z kunnen gebruiken in combinatie met de /i switch (flag) voor case-insensitive matching.

Mogelijk zou je ook aan een alternatieve oplossing kunnen denken waarbij je niet-legale karakters replaced (maar vermijd blacklists omdat je dan mogelijk niet alle ongewenste gevallen vangt) en dan na afloop deze (potentieel aangepaste) string vergelijkt met het origineel. Indien de twee strings verschillen wil dat zeggen dat er illegale karakters gestript zijn en dus dat de invoer ongeldig was.

Bij het zoeken naar een oplossing ben je niet per definitie beperkt tot de kaders van je regexp. En mogelijk maakt dat het regexp-deel een stuk eenvoudiger ;).
Gewijzigd op 28/12/2016 16:57:36 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

29/12/2016 13:40:38
Quote Anchor link
>> In plaats van a-zA-Z zou je ook simpelweg a-z kunnen gebruiken in combinatie met de /i switch (flag) voor case-insensitive matching.

Thanks, ik zal dat straks nog eens proberen, hoewel ik meen ergens gelezen te hebben dat dat voor een html5 input pattern niet werkt, maar zeker weten doe ik dat niet meer.

>> Bij het zoeken naar een oplossing ben je niet per definitie beperkt tot de kaders van je regexp. En mogelijk maakt dat het regexp-deel een stuk eenvoudiger ;).

Klopt inderdaad, maar in sommige situaties vind ik een regex wel de "mooiere" oplossing. Vooral omdat het hier echt om een bepaald patroon gaat, en in mindere mate om de vraag 'zit dat teken er wel of niet in'. Maar wat je zegt klopt zeker. Er zijn meerdere mogelijkheden.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.