Javascript用户的输入验证
javascript user's input validation
我正在创建一个需要验证用户输入的程序。
用户应该能够写浮点数和一些字母,如'k'代表千或'm'代表百万。允许有:数字,列表中只有一个字母(g,k,m,n,u)和只有一个'。'表示十进制数。如果用户输入不同的符号,则列表中的两个字母,两个点,后面跟着另一个符号-文本框中不显示任何内容。
到目前为止,我所做的根本不起作用。我甚至不能列出允许使用的符号。我该如何解决这个问题?我几乎看过网上所有关于regexp的页面。function signFilter(e)
{
var keynum;
var keychar;
var numcheck;
if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
keychar = String.fromCharCode(keynum);
numcheck = /[0-9GMkmpu.]/;
return numcheck.test(keychar);
}
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onkeydown下面是输入的示例代码。我所做的一切努力都没有得到合理的结果。(当然,我去掉了!)"从返回)。
您的正则表达式只是测试其中一个字符进入[
和]
的存在。您要做的是测试字符串中是否存在任何其他字符。
我建议你有一个^
符号,如:[^0-9GMkmpu.]
,所以你将能够检测到字符串中的任何错误字符。
使用正则表达式,您可以这样写:aaaaaaaaaaakhhhhhhhhh将返回yes.
从您提供的代码来看,看起来您是在一次测试一个字符的字符串。您需要的代码只验证输入的字母是否正确,但从整体上看,由按键创建的最终字符串可能不是您期望的格式。
例如,字符串123.123.321.m
都是有效的字符,但最后的字符串是无效的。
基本上,您需要添加验证来检查最终输入的字符串。
像这样的regexp可以帮助您验证最终的字符串输入。
numcheck = /^[0-9]*'.?[0-9]+[gkmnu]?$/
这个正则表达式表示
- 可选匹配0-9
- next,可选地匹配点
- 下一步,匹配至少一个数字
- 字符串的结尾可以是集合 中的一个字符。
/^[0-9]*['.]*[0-9]*[Mkmpu]*$/
这个非常灵活,可以处理诸如"。57米"57" 57米"57米"57。米"57.57米"。
可以了
http://jsfiddle.net/mplungjan/KvJQx/window.onload=function() {
document.getElementById("t1").onkeypress=function(e) {
var keyNum = (window.event)?window.event.keyCode:e.which;
var keyChar = String.fromCharCode(keyNum);
return /[0-9GMkmpu'.]/.test(keyChar);
}
}
相关文章:
- Angular2 Javascript 验证 输入数字而不是字符
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- 如何通过 JavaScript 验证输入字段中的值
- jQuery 验证输入文本是否仅接受数字、单词或日期
- 如何javascript验证<输入类型=文件多个>如果浏览器不支持多个
- 用于验证输入的JavaScript正则表达式超过0个字符
- 验证输入字段和块字符
- Angularjs iu.mask带有日期的验证输入
- 验证输入,更新<td>属性以匹配验证状态
- 通过点击表单外的按钮,使用required和angularjs验证输入字段
- 基于自身输入变化的角度验证输入
- 使用 javascript 验证输入数组
- 年龄验证输入框 - 计算是否超过 18 岁
- JQuery 验证输入类型文件在服务器端失败
- 如何使用jquery或javascript验证输入框的内容
- JSF 和 RichFaces 用于实时验证输入框
- Javascript/Jquery:使用数字范围验证输入
- 如何在更改时验证输入字段并启用提交按钮
- 编码器点火器未验证输入文本
- 在复选框选择后验证输入类型文本