Permalänk
Medlem

Reguljärt uttryck

Har upptäckt att jag effektivt blockerat mina användare från att ange minustal i en del formulär genom att validera mot följande reguljära uttryck:

^[0-9]{1,}$

Efter lite googlande kom jag fram till att jag behöver lägga till \- och fick fram:

^\-[0-9]{1,}$

Vilket tydligen innebär att endast minustal är tillåtna. Kan jag få hjälp med ett reguljärt uttryck som tillåter både positiva och negativa siffror? Tack

Permalänk
Medlem

^[+-]?\d+$

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Det tycks som att man är tvungen att ange en siffra med det uttrycket, Teknocide. Mina användare måste ha möjligheten att lämna blankt också...

Permalänk
Medlem

Då borde ^[+-]?\d*$ fungera

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Perfekt!

Permalänk
Medlem

[] är en tom sträng (null)

Permalänk
Medlem

Det slog mig att ^(?:[+-]?\d+)?$ kanske är ännu bättre, då den förra matchar ett ensamt plus eller minus.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Hmm, om användaren nån gång ibland känner för att stoppa in ett decimaltal då?

Permalänk
Medlem
Skrivet av bjrkis:

Hmm, om användaren nån gång ibland känner för att stoppa in ett decimaltal då?

^(?:[+-]?\d+([,\.]\d+)?)?$

Permalänk
Medlem
Permalänk
Medlem

Betyder alla reguljär uttryck "tecken" (till exempel: |()[]*) samma sak oavsett programmerings språk?

Permalänk
Medlem
Skrivet av Chigurh:

Betyder alla reguljär uttryck "tecken" (till exempel: |()[]*) samma sak oavsett programmerings språk?

Regex är fristående från programmeringsspråk. Det finns lite olika dialekter, där vissa har stöd för mer avancerade uttryck, men de grundläggande byggstenarna är samma. http://www.regular-expressions.info/ innehåller mycket bra information, har lärt mig det mesta därifrån (men det var mindre reklam då..)

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Jag förstår verkligen folk som säger sig hata regex. Oavsett hur kraftfullt det är så blir det lätt väldigt invecklat och jag blir imponerad nästan varje gång det fungerar

I det här fallet ska siffror tillåts, både med och utan minustecken framför. Decimaltal också, så därav punkt och kommatecken. Minst ett tecken måste anges (företrädesvis en siffra).

Har jag då kopplat rätt med följande uttryck eller finns det ett bättre sätt?

"^((?:[+-]?\d+([,\.]\d+)?)?)+$"

(Jag vet att det fungerar precis som jag vill, men det känns alltid bra med lite bekräftelse )

Permalänk
Medlem
Skrivet av bjrkis:

Jag förstår verkligen folk som säger sig hata regex. Oavsett hur kraftfullt det är så blir det lätt väldigt invecklat och jag blir imponerad nästan varje gång det fungerar

I det här fallet ska siffror tillåts, både med och utan minustecken framför. Decimaltal också, så därav punkt och kommatecken. Minst ett tecken måste anges (företrädesvis en siffra).

Har jag då kopplat rätt med följande uttryck eller finns det ett bättre sätt?

"^((?:[+-]?\d+([,\.]\d+)?)?)+$"

(Jag vet att det fungerar precis som jag vill, men det känns alltid bra med lite bekräftelse )

För att inte prata om att kompilera dem, något som perl, python, ruby och php gör fel (senast jag kollade iaf).

Visa signatur

Plan9 fan. In glenda we trust.

Permalänk
Medlem
Skrivet av dagle:

För att inte prata om att kompilera dem, något som perl, python, ruby och php gör fel (senast jag kollade iaf).

Vad baserar du det på?