【发布时间】:2016-03-05 09:59:32
【问题描述】:
我正在尝试验证用户名字段。该字段必须包含数字、字母且没有特殊字符。
This pattern="[A-Za-z0-9]" 代表用户名,带有数字和字母。
模式应该是什么?
【问题讨论】:
-
我认为这个解决方案已经回答了你的问题:stackoverflow.com/a/19619457/4420599
标签: html pattern-matching
我正在尝试验证用户名字段。该字段必须包含数字、字母且没有特殊字符。
This pattern="[A-Za-z0-9]" 代表用户名,带有数字和字母。
模式应该是什么?
【问题讨论】:
标签: html pattern-matching
您的模式代表单个 大写字符、小写字符或数字。
你想要的图案是这样的:
/^[a-z\d]+$/i
解释:
^ - 从字符串的开头(或带有 m 标志的行)[ - 开始字符类a-z - 从 a 到 z 的字符范围\d - 与 0-9 相同(任何数字)] - 关闭字符类+一个或多个$ - 字符串结尾(或带有 m 标志的行)然后我们在实际的正则表达式 // 本身之外有 标志。
我们使用了i 标志,它代表不区分大小写。
备忘单/工具
【讨论】:
我不知道这是否可以在原始 HTML 中完成(怀疑),所以你需要一些 javascript。如果你愿意,你可以在“onchange”属性上调用一个函数,所以元素就像:
<input id="username" type="text" onchange="validate()" name="name" value=""/>
然后,javascript 函数将访问元素、获取值并检查其中的内容,如下所示:
function validate() {
var name = document.getElementById("username").value;
//do checking here however you like (regex, iteration, etc.)
}
但是,这需要在服务器端完成。如果你真的想的话,你可以在客户端做,但无论如何都必须在服务器端做。我假设您的意思是客户端,因为您使用 HTML 标记问题,而不是服务器端语言。
【讨论】:
这应该可以用 javascript 测试字符串中的字符和数字。
/^[a-zA-Z0-9]+$/
【讨论】:
试试这个
<input type="text" class="form-control" name="username" onkeyup="if (/[^|a-z0-9]+/g.test(this.value)) this.value = this.value.replace(/[^|a-z0-9]+/g,'')">
【讨论】: