更正,上面的表达式也是错的。<SCRIPT LANGUAGE="JavaScript">
<!--
var r = /^(([0-9,a-z,\-]*\d[0-9,a-z,\-]*[a-z][0-9,a-z,\-]*)|([0-9,a-z,\-]*[a-z][0-9,a-z,\-]*\d[0-9,a-z,\-]*))$/ifunction assertTrue(str){
if (!r.test(str)) alert("test fail at\n\""+str+"\"")
}function assertFalse(str){
if (r.test(str))  alert("test fail at\n\""+str+"\"")
}
assertTrue("a-Bc123")
assertTrue("1-23asdf")
assertTrue("-aBc123")
assertTrue("123asdf-")
assertTrue("asdf1-23")
assertTrue("-asdf123")
assertTrue("asdf123-")
assertFalse(" a-Bc123")
assertFalse("1-23 asdf")
assertFalse(" -aBc123")
assertFalse("12 3asdf-")
assertFalse("asdf1 -23")
assertFalse("-asdf123 ")
assertFalse("asdf123- ")
assertFalse("123")
assertFalse("asdf")
assertFalse("-aB^c123")
assertFalse("12 3asdf-")
assertFalse("asdf1 -23")
assertFalse("-asdf123 ")
assertFalse("asdf123- ")
//-->
</SCRIPT>