webForumDet fria alternativet

Regexp-mönster

ASP

5 svar · 544 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej,

Har provat att göra en liten regexpfunktion, men det vill sig inte...

Jag vill plocka ut det numeriska värdet ur en sträng som kan se ut som nedan...


<%
function GetContractNr(str)
	dim re, m, result
	set re = new regexp
	re.pattern = "([^0-9])"
	if re.test(str) then
		set m = re.execute(str)
		result = m(0).submatches(0)
	else
		result = ""
	end if
	GetContractNr = result
end function

dim s
s = GetContractNr(" foo 123 weee")
response.write s
%>
Medlem sedan juni 20019 519 inlägg
#2

^ inne i en [] betyder att matcha det som inte är inne i gruppen.. dvs du kommer matcha allt som inte är 0-9 (vilket du egentligen kunde skriva \d
Du vill nog köra en replace istället för att plocka bort " foo " och " weee":

<%
Function GetContractNr(str)
	with new regExp
		.pattern = "[^\d]+"
		.IgnoreCase = True
		.Global = True
		GetContractNr = .Replace(str, "")
	End With

End Function

dim s
s = GetContractNr(" foo 123 weee")
Response.Write(s) ' "123"
%>

Eller är det den första nummer serien du vill säga är "kontrakt numret"?

Medlem sedan jan. 20013 582 inlägg
#3

Ahhh....

Det funkar ju finfint...

Men, hur vänder man på det, dvs får ut allt utom det numeriska?

Mvh
Henrik

Medlem sedan juni 20019 519 inlägg
#4

läs den första meningen jag skrev:
^ inne i en [] betyder att matcha det som inte är inne i gruppen

[^\d]+

Hitta allt som inte är av "typen" \d (tal)

[\d]+

Hittar allt som är av "typen" \d. eller helt enkelt bara:

\d+

+ är 1-hur många träffar som hellst.

Medlem sedan maj 200010 687 inlägg
#5

[^\d]+
är samma som
\D+
:)

Medlem sedan juni 20019 519 inlägg
#6

sant ;) Det är jag som tycker det känns enklare att ha det som [^\d] ;)

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)