【发布时间】:2015-08-18 11:24:59
【问题描述】:
我正在尝试在 javascript 中正则表达式输入字段。
我所做的是,每次按下一个键时,都会调用以下代码:
function testPattern(pattern, evt) {
// in this case, pattern = "^[0-9]*$"
var inputField = evt.getCurrentTarget();
var keyCode = evt.getKeyCode();
var oldValue = inputField.getSubmittedValue();
// return if keycode is navigation, delete or backspace
if((keyCode >= 35 && keyCode <= 40) || keyCode == 8 || keyCode == 46){
return;
}
var regExp = new RegExp(pattern);
var hasMatch = false;
hasMatch = regExp.test(String.fromCharCode(keyCode));
if (!hasMatch) {
inputField.setValue(oldValue);
evt.cancel();
}
}
预期结果是:如果输入与数字不同,则输入文本框中不会写入任何字符。
它工作正常,除了字符 # $ % & 和 (
我尝试了以下正则表达式(非常相似)
"^[\\d]$"
"^[\\d]*$"
"^[\\d]+$"
"^[0-9]*$"
有人知道为什么会发生这种情况吗?
【问题讨论】:
标签: javascript regex