Javascript 用于检查护照代码的正则表达式

Javascript 用于检查护照代码的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个用于我的护照代码的文本框,我想引入一个正则表达式,以便在按下键时检查护照代码是否由9个字符组成,并且只有我的第一个字符是大写字母,其余字符只接受数字。我在占位符中编写了示例 我写了下面的代码,但它不工作 我的正则表达式错了吗? 这是我的密码: $(“.passno”)。每个(函数(索引,元素){ $(this).bind('keydown',函数(事件){ 开关(event.keyCode){ 案例8://退格 案例9://选项卡 案例13://输入 案例37://左 案例38://以

我有一个用于我的护照代码的文本框,我想引入一个正则表达式,以便在按下键时检查护照代码是否由9个字符组成,并且只有我的第一个字符是大写字母,其余字符只接受数字。我在占位符中编写了示例

我写了下面的代码,但它不工作

我的正则表达式错了吗? 这是我的密码:

$(“.passno”)。每个(函数(索引,元素){
$(this).bind('keydown',函数(事件){
开关(event.keyCode){
案例8://退格
案例9://选项卡
案例13://输入
案例37://左
案例38://以上
案例39://对
案例40://向下
打破
违约:
var regex=新的RegExp(“^[A-Z0-9.,/$@()]+$”;
var key=event.key;
如果(!正则表达式测试(键)){
event.preventDefault();
$(this).closest(“.box infoes”).find(“.error”).css(“display”,“block”)
返回false;
}否则{
$(this).closest(“.box infoes”).find(“.error”).css(“display”,“none”)
}
打破
}
});
});

这是一个错误的护照密码!

您不应该在按下的键上进行测试,而是测试结果文本框的值

您将使用以下正则表达式:

var regex = new RegExp("^[A-Z][0-9]{8}$");
您不应该只测试按下的键的原因是,您将无法确定它是否是第一个字符,也不知道这是否会使总长度不同于9

$(“.passno”)。每个(函数(索引,元素){
$(this).bind('keyup',函数(事件){
var regex=newregexp(“^[A-Z][0-9]{8}$”;
var值=event.currentTarget.value;
如果(!正则表达式测试(值)){
$(this).next(“.box infoes”).find(.error”).css(“display”,“block”)
}否则{
$(this).next(“.box infoes”).find(.error”).css(“display”,“none”)
}
});
});

这是一个错误的护照密码!

您不应该在按下的键上进行测试,而是测试结果文本框的值

您将使用以下正则表达式:

var regex = new RegExp("^[A-Z][0-9]{8}$");
您不应该只测试按下的键的原因是,您将无法确定它是否是第一个字符,也不知道这是否会使总长度不同于9

$(“.passno”)。每个(函数(索引,元素){
$(this).bind('keyup',函数(事件){
var regex=newregexp(“^[A-Z][0-9]{8}$”;
var值=event.currentTarget.value;
如果(!正则表达式测试(值)){
$(this).next(“.box infoes”).find(.error”).css(“display”,“block”)
}否则{
$(this).next(“.box infoes”).find(.error”).css(“display”,“none”)
}
});
});

这是一个错误的护照密码!
试试这个:

var regex = new RegExp("^[A-Z0-9.,/ $@()]+$");
这个在正则表达式“
/
中有错误

但我建议:

var regex = new RegExp("[A-Z]{1}\d{8}");
试试这个:

var regex = new RegExp("^[A-Z0-9.,/ $@()]+$");
这个在正则表达式“
/
中有错误

但我建议:

var regex = new RegExp("[A-Z]{1}\d{8}");

如下所示,您似乎希望删除多余的字符,然后检查值是否符合您的要求,这将问题分解为两个函数,它们结合起来为您提供所需的功能

//从输入字符串中删除任何非大写或数字字符
常数sanitizePassport=x=>x.replace(/[^A-Z0-9]+//g')
//检查字符串是否与大写字母后跟8个数字匹配
const validatePassport=x=>/^[A-Z]\d{8}$/.test(sanitizePassport(x))
console.log(
sanitizePassport(“(@A1234 5678)”
)
console.log(
validatePassport('(A1234 5678)/=>true
)
console.log(
validatePassport('a12345678')/=>false
)
console.log(
validatePassport('a1234567')/=>false
)
console.log(
validatePassport('a123456789')/=>false
)

如下所示,您似乎希望删除多余的字符,然后检查值是否符合您的要求,这将问题分解为两个函数,它们结合起来为您提供所需的功能

//从输入字符串中删除任何非大写或数字字符
常数sanitizePassport=x=>x.replace(/[^A-Z0-9]+//g')
//检查字符串是否与大写字母后跟8个数字匹配
const validatePassport=x=>/^[A-Z]\d{8}$/.test(sanitizePassport(x))
console.log(
sanitizePassport(“(@A1234 5678)”
)
console.log(
validatePassport('(A1234 5678)/=>true
)
console.log(
validatePassport('a12345678')/=>false
)
console.log(
validatePassport('a1234567')/=>false
)
console.log(
validatePassport('a123456789')/=>false
)
试试这个

var regex = new RegExp("^[A-Z][0-9]{8}$");
符合您的需要。

试试这个

var regex = new RegExp("^[A-Z][0-9]{8}$");

将符合您的需要。

您确定问题不在代码的其余部分吗?您确定问题不在代码的其余部分吗?虽然这将修复某些问题,但用户只需要字母数字。。。为什么要把其他的符号放在第一位呢?虽然这样可以解决一些问题,但用户只需要字母数字。。。为什么要把其他符号放在第一位?keyup呢?keyup呢?const是什么?只是一个es6变量,不能反弹到不同的值。您可以将其替换为
var
,将箭头函数
x=>x
替换为正常函数查找ES6箭头函数
let
const
。世界正在向ES6迈进,你应该花点时间去理解它。你可以在youtube上用10分钟学会它。除非你愿意进一步了解周围的人,否则你将永远是一名员工。检查channel fun Function const是什么?只是一个es6变量,不能反弹到不同的值。您可以将其替换为
var
,将箭头函数
x=>x
替换为正常函数查找ES6箭头函数
let
const
。世界正在向ES6迈进,你应该花点时间去理解它。你可以在youtube上用10分钟学会它。你