¯\(º_o)/¯
|
|
Join Date: Sep 2006
Location: Norway
Posts: 2,815
|
|
String and number range checks
This is a function I made while working on my RegEx parser which is soon finished. I thought I would release this so others could perhaps use it for validation and checks etc. Good example: Limit and validation of input
The use of ascii values is pretty obvious,
NPC Code:
if ("a" == "A") {
echo("a equals A");
}
Here's the code. Haven't heavy tested it so might my bugs.
PHP Code:
// V1.0 function onCreated() { this.NR = "48,49,50,51,52,53,54,55,56,57"; this.az = "97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122"; this.AZ = "65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90"; } public function rangecheck(rangecheck, string) { if (rangecheck.charat(0) == "[") rangecheck = rangecheck.substring(1, rangecheck.length()-2); temp.hyphens = rangecheck.positions("-"); temp.ranges = {}; for(temp.i : temp.hyphens) { temp.ranges.add(rangecheck.substring(temp.i-1, 3)); } temp.check = false; for(temp.range : temp.ranges) { temp.value1 = temp.range.charat(0); temp.value2 = temp.range.charat(2); temp.array = "error"; if ((getascii(temp.value1) in this.NR) && (getascii(string) in this.NR)) { temp.array = this.NR; } else if (getascii(temp.value1) in this.az) { if ((getascii(temp.value2) in this.az) && (getascii(string) in this.az)) { temp.array = this.az; } } else if ((getascii(temp.value1) in this.AZ) && (getascii(string) in this.AZ)) { temp.array = this.AZ; } else if (temp.array == "error") continue;
temp.startpoint = temp.array.index(getascii(temp.value1)); temp.endpoint = temp.array.index(getascii(temp.value2));
temp.arraycheck = temp.array.subarray( temp.startpoint, (temp.endpoint-temp.startpoint+1) ); if (getascii(string) in temp.arraycheck) { temp.check = true; break; } } return temp.check; }
public function is_nr(input) { return (getascii(input) in this.NR); } public function is_az(input) { return (getascii(input) in this.az); } public function is_AZ(input) { return (getascii(input) in this.AZ); }
Examples:
PHP Code:
/* rangecheck(range, string);
Takes a range and check if the string character is within this range
ranges: 0-9: any number between 0 and 9 a-z: any character between lowercase a and lowercase z A-Z: any character between uppercase A and uppercase Z
you write ranges like this: [0-4a-f]: would check if character is one of 0,1,2,3,4 or a,b,c,d,e,f [0-9a-fA-F]: would check if character is between 0 and 9, a and f and A and F [1-3a-cA-C]: would check if character is one of 1,2,3,a,b,c,A,B,C
string: a single character, a letter or number */ function onCreated() { this.join("module_regex_rangecheck");
echo(rangecheck("[0-9a-f]", "f")); // true, f is within the a-f range }
|
Last edited by Chompy; 12-12-2011 at 04:31 AM..
Reason: See PFA's post beneath ^^ removed lower to upper ranges
|