我有这个脚本只允许负数的 0-9 和 - 字符。但是,这并不会阻止用户输入 123 - ,这会导致错误。这有解决方法吗?我更喜欢尽可能坚持使用JavaScript。但如果没有别的办法,我会对插件持开放态度。
不允许其他字符如字母,它运作良好。但是我需要阻止用户在结尾或除了行开头之外的任何其他部分输入 - 。
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9-]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
答案 0 :(得分:1)
<强> JS 强>
// validates the key down event
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
// checks if it is a digit or first char is a -
if (!/^-?\d+/.test(key)) {
console.log(key);
// stops event 100% if it isn't what you want
evt.stopPropagation();
evt.preventDefault();
evt.returnValue = false;
evt.cancelBubble = true;
return false;
}
}
<强>正则表达式强>
^-?\d+$
<强>描述强>
/-?\d+/
^ assert position at start of the string
-? matches the character - literally
Quantifier: ? Between zero and one time, as many times as possible, giving back as needed [greedy]
\d+ match a digit [0-9]
Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
$ assert position at end of the string
答案 1 :(得分:0)
如果您喜欢正则表达式,可以尝试使用此
(-|[0-9]?)[0-9]+
这意味着开始是 - 或数字。然后只有数字
答案 2 :(得分:0)
你只需稍微修改你的正则表达式!
var regex = /-?\d+
/
?表示0或1,d +仅验证数字。
答案 3 :(得分:0)
只能使用正则表达式/^-?\d+$/
匹配正负整数。
<强>解释强>
^
- 字符串的开头
-?
- 可选的负号{贪婪; 0-1}
\d+
- 一个或多个十进制数字,即[0-9] {贪心; 1无穷}
$
- 字符串结尾
<强>演示:强>
> /^-?\d+$/.test('42')
true
> /^-?\d+$/.test('-42')
true
> /^-?\d+$/.test('42-')
false
> /^-?\d+$/.test('a42')
false
> /^-?\d+$/.test('42b')
false