请问一判断用户名是否符合的正则表达式,达人请

请教一判断用户名是否符合的正则表达式,达人请.
在html层要判断一控件内的输入的用户名是否正确,由于各种原因必须使用javascript来判断.
规则是4-16个字符包括英文,数字,下划线,不能全部是数字.下划线空格等不能在开头和结尾.就是常用的那种。
希望能给个正则完整函数更好   谢谢,研究好久不得其解.正则还要加强学习...

------解决方案--------------------
沙发
------解决方案--------------------
try

var reg = /^(?!\D+$)(?!_)[a-z0-9_]{3,15}[a-z0-9]$/ig;


下划线空格等不能在开头和结尾
--------------
怎么还有空格
------解决方案--------------------
string str = ...
Regex re = new Regex(@ "^(?![0-9]+$)[^\s_][a-zA-Z0-9_\s]+[^\s_]$ ");
MessageBox.Show(re.Match(str).Success.ToString());
------解决方案--------------------
<script language= "javascript ">
function check(str)
{
var reg = /^(?!\d+$)(?!_)[a-z0-9_]{3,15}[a-z0-9]$/ig;
if(reg.test(str))
{
alert( "符合 ");
}
else
{
alert( "不符合 ");
}
}
check( "abc123 ");
</script>
------解决方案--------------------
up~~~~~~~
------解决方案--------------------
^[a-zA-Z][a-zA-Z0-9_]{3,15}$