我有正则表达式只匹配数字和一些特定的符号。 /[()\-\+ \d]/g
我使用regex101.com尝试此正则表达式,它匹配所有预期的符号。
在我的应用程序中,我使用此正则表达式检查用户输入文本框是否只允许符号。这里有问题,因为根据正则表达式只允许数字,空格和()
。
答案 0 :(得分:1)
你需要anchor正则表达式到字符串的开头和结尾,并允许多个字符匹配。如果不这样做,只要字符串中至少有一个允许的字符,正则表达式就会成功。
if (/^[()+ \d-]*$/.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
答案 1 :(得分:0)
嗨(聚会有点晚了),
TL;DR: 使用 var key = event.key;
问题从来不在于正则表达式本身。 在撰写本文时,您可以使用另一个事件处理程序,使用 keypress 而不是 keydown 会起作用,因为 keypress 为您提供字符代码,而不是关键代码。
但是现在不推荐使用 keypressed,所以使用 keydown 很好,但是现在 event.key 有很好的浏览器支持,所以你可以使用:
var key = event.key;
代替
var key = String.fromCharCode(event.which);
此外,代码中的 value 逻辑也不是必需的,因为 value 每次都未定义。