webForumDet fria alternativet

Reguljärt uttryck

JavaScriptur Javascript

6 svar · 299 visningar · startad av asp

Medlem sedan aug. 2002733 inlägg
Frågan#1

Hej...

Söker ett uttryck som accepterar följande.

Se bifogad bild!

* Ett nummer i början.
* Ett namn som består av antingen ett, två eller tre ord.
* Ett värde som består av ett, två eller tre tal med en valuta på slutet. Ex. 13 400 SEK, 400 MM, 2 000 300 CHF.
* Motsvarande grej med lönen.
* Ålder som består av ett tal.
* Längd som består av ett tal.
* Vikt som består av ett tal.
* Tretton tal mellan 0-10.

Jag har försökt med något liknande...

/^(\d+)\s(\w\s)+((\d+)\s)+(\w+)\s((\d+)\s)+(\w+)\s((\d+)\s){3}(\d|10){13}$/
mz.gif
Medlem sedan dec. 20025 483 inlägg
#2

Vill du plocka ut några delar eller endast validera formatet? Om det senare:

^(?:\d+\s(?:[^0-9 ]+\s){1,3}(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){3}(?:\d\s?){13}(?:\r\n)?)+$/i
Medlem sedan aug. 2002733 inlägg
#3

Validera ja...

Jag vet inte varför du avslutar och börjar på ett annat sätt än vad jag brukar göra... skall man inte börja med / och sluta med /.... vad gör i där?

var re = ^(?:\d+\s(?:[^0-9 ]+\s){1,3}(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){3}(?:\d\s?){13}(?:\r\n)?)+$/i;
	if(!re.test(s)) {
		return false;
	}
Medlem sedan dec. 20025 483 inlägg
#4

'i' står för case-insensitive. Det låter oss skriva ex. [a-z] istället för [A-Za-z].

Medlem sedan aug. 2002733 inlägg
#5

Den tillåter inte följande sträng. (Jag lade till / före ^, skulle jag det?)

18 Viktor Lundqvist 2 495 744 SEK 32 155 SEK 25 198 106 4 5 2 0 4 0 2 1 7 1 1 5 7
Medlem sedan dec. 20025 483 inlägg
#6

Japp!

Fungerar för mig dock:

<script>
function f(r)
{
 r.elements[1].value = /^(?:\d+\s(?:[^0-9 ]+\s){1,3}(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){1,3}(?:[a-z]+)\s(?:\d+\s){3}(?:\d\s?){13}(?:\r\n)?)+$/i.test(r.elements[0].value) ? "Godkänt" : "Ej godkänt";
}
</script>
<form>
<textarea cols=60 rows=20>
16 Fredrik Gustavsson 1 381 103 SEK 24 240 SEK 25 182 79 5 3 4 4 2 2 0 4 2 2 1 5 7 
18 Viktor Erik Lundqvist 2 495 744 SEK 32 155 SEK 25 198 106 4 5 2 0 4 0 2 1 7 1 1 5 7 
19 abc 2 366 266 EUR 0 EUR 18 161 63 3 1 0 1 1 1 5 5 3 0 0 1 0 
20 Lennart Billing 296 835 SEK 0 SEK 18 180 86 6 4 1 2 0 1 1 1 7 2 3 0 4 
</textarea>
<textarea cols=60 rows=20></textarea>
<input type=button onclick="f(this.form)" value="OK">
</form>
Medlem sedan aug. 2002733 inlägg
#7

Tackar, dumt fel av mig. Hade ersatt alla mellanslag med kolon. Så jag ändrade \s till :

134 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)