所以我正在写一个注册表,我需要显示名称只是数字,字母和下划线.
看看我的代码并告诉我我做错了什么.
<form method="post" action="/" onsubmit="return check_form()">
<input type="text" id="display-name" name="display-name" maxlength="255" />
<input type="submit" />
</form>
<script type="text/javascript">
<!--
var name_regex = /^([a-zA-Z0-9_])+/
function check_form()
{
if (!name_regex.test(document.forms[0].elements[0].value))
{
document.forms[0].elements[0].focus()
alert("Your display name may only contain letters, numbers and underscores")
return false
}
}
-->
</script>
Run Code Online (Sandbox Code Playgroud)
它显然已被删除,不包括与问题无关的任何内容,但即使这个代码段也不起作用.
Ori*_*rds 14
你的正则表达式
/^([a-zA-Z0-9_])+/
Run Code Online (Sandbox Code Playgroud)
寻找
然后无论发生什么事都没关系.这个正则表达式将匹配任何东西,只要它以字母,数字或下划线开头即可
如果你把一个$放在最后,那么它将起作用 - $匹配'字符串的结尾',所以它匹配的唯一方法是在字符串的开头和结尾之间只有数字,字母和下划线.
/^([a-zA-Z0-9_])+$/
Run Code Online (Sandbox Code Playgroud)
其次,如果您重新排列HTML ,我建议使用document.getElementById('display-name').value而不是document.forms因为它不会破坏,并且更像是"通常接受的标准"