我正在创建一个程序,我需要验证用户输入。
用户应该可以写入浮动数字和一些字母,如'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 :(得分:0)
你的正则表达式只是测试其中一个字符是否存在[
和]
。你要做的是测试字符串中是否存在任何其他字符。
我建议您使用^
符号:[^0-9GMkmpu.]
,这样您就可以检测到字符串中的任何错误字符。
使用正则表达式,你写了类似的东西:aaaaaaaaakhhhhhhhhh将返回是。
答案 1 :(得分:0)
从您提供的代码中,您似乎一次只测试一个字符串。 您必须输入的代码仅验证输入了正确的字母,但作为一个整体,从按键创建的最终字符串可能不是您期望的格式。
例如,字符串123.123.321.m
都是有效字符,但最终字符串无效。
基本上,您需要添加检查输入的最终字符串的验证。
这样的正则表达式可以帮助您验证最终的字符串输入。
numcheck = /^[0-9]*\.?[0-9]+[gkmnu]?$/
此正则表达式
答案 2 :(得分:0)
/^[0-9]*[\.]*[0-9]*[Mkmpu]*$/
这个非常灵活,可以处理诸如“.57m”“57”“57m”“57.m”“57.57m”等其他情况。
答案 3 :(得分:0)
这有效
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);
}
}