<?php

function validate_username($username){
	// Enforce that username has to be 3-100 characters, alphanumeric, and first character a letter.
	// Possibility without begin/end characters and i: [a-z][a-z0-9@.+-_]{2,100}
	// Allow for simple email usernames in the future...
	return !!preg_match('#^[a-zA-Z][a-zA-Z0-9@.+-_]{2,100}$#', trim($username)); // Note the regex string is single quoted.
}



$good_test_cases = array(
'good',
'AllUppercase',
'AllLowercase',
'username23434',
'jsherman@shermanbrothers.com',
'bobz',
'william',
'testzor',
'William',
'WiLiAm',
'Herkamer',
'test@example.com',
'will@iam.net',
'roy-ronalds@gmail.com',
'roy.ronalds@gmail.com',
'roy+ronalds@gmail.com',
'roy_ronalds@gmail.com',
'roy_ron_alds@gmail.com'
);


	
$false_test_cases = array(
'ba*d',
'Mark%twain',
'\'apos',
'apos\'',
'quo"tes',
'angle<bracket',
'angle>bracket',
'html<script>inside',
'!username',
'6farsi',
'$%^$%',
'O\'Brian'
	);
	
// These should pass.
foreach($good_test_cases as $value){
	assert(validate_username($value));
}

// These should pass (but not all of them do)
foreach($false_test_cases as $val){
	assert("!validate_username('".addslashes($val)."')");
}
?>