webForumDet fria alternativet

Regex: Validera sträng

Webbutveckling

6 svar · 845 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#1

Eftersom det inte finns något eget forum för Regular Expressions så lägger jag frågan här.

Vill acceptera en sträng som:
- Börjar med ett heltal (1-999999999)
- Om ett till heltal följer så skall detta separeras från föregående med ett kommatecken(,)
- Det får inte förekomma några andra tecken än siffror och kommatecken
- Strängen får max vara 2000 tecken.

Exempel (rätt):
18,9182,2347290,78,23
843
9832,198237

Exempel (fel):
827,
484435,23, 345635,2343
2323,28394029382,45,125
,12143,123,466
29,234s,12313

Medlem sedan dec. 20025 483 inlägg
#2

^\d{1,9}(?:,\d{1,9})*$

Använd sedan en längdfunktion i aktuellt språk för att kolla längden; alltså

if myString.length <= 2000 and /^\d{1,9}(?:,\d{1,9})*$/.test(myString) then
  ...
Medlem sedan sep. 20011 914 inlägg
#3

Fungerar hur bra som helst.

Tackar så mycket.

Medlem sedan sep. 20011 914 inlägg
#4

Skulle behöva ytterliggare en version.

Vill acceptera en sträng som:
- Börjar med en #, följs åt av 1-50 valfria tecken, sen avslutas med en #.
- Om en till delsträng enligt ovan modell följer så skall denna separeras från föregående med ett kommatecken(,)
- Delsträngen får innehålla alla världens tecken utom (#), (,) och (mellanslag).

Exempel (rätt):
#1b#,#jj_に9は#,#_A_A][@#,#Здравствулте!#,#ÅÄÖåäöûü#
#여보세요#
#9832#,#198237#

Exempel (fel):
827,
#48равс5#,#23#, #345635#,#2343#
#2323#,#28394,029382#,#45#,#125#
,#12143#,#123#,#466#
#равс##
#여보세요

Medlem sedan juni 20008 205 inlägg
#5

Typ

^#[^#]{1,50}#(,#[^#]{1,50}#)*$

Dvs, börja med en brädgård, följd av 1-50 icke-brädgårdar, följd av brädgård, ev följt av godtyckligt antal liknande sekvenser separerade med kommatecken.

Sen är nog Programmering - övrigt ett bättre forum för detta eftersom regexpar inte har någon inneboende koppling till webbutveckling.

Medlem sedan sep. 20011 914 inlägg
#6

Ett litet tillägg och det fungerade hur fint som helst. Tackar.

^#[^#^,^ ]{1,50}#(,#[^#^,^ ]{1,50}#)*$

Spango skrev:

Sen är nog Programmering - övrigt ett bättre forum för detta eftersom regexpar inte har någon inneboende koppling till webbutveckling.

Eller än bättre, ett eget forum för Regular Expressions. Ja, just de. De tog de ju bort. ;)

Medlem sedan juni 20008 205 inlägg
#7

Tillägget ser lite mysko ut, du behöver bara ett tak:

^#[^#, ]{1,50}#(,#[^#, ]{1,50}#)*$

Du kan ev. vilja byta ut mellanslagen i mönstret mot \s så får du med radbrytningar och tabbar också.

Dino skrev:

Eller än bättre, ett eget forum för Regular Expressions. Ja, just de. De tog de ju bort. ;)

Would you like som cheese with that whine, sir? :p

265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)