";可能是;javascript中正则表达式的逻辑

";可能是;javascript中正则表达式的逻辑,javascript,regex,Javascript,Regex,我正在根据提供的正则表达式编写一个信用卡验证器 我知道应用正则表达式可以告诉我某个数字序列“匹配”或“不匹配”。但我不知道如何测试“可能导致匹配”的子序列 例如: 对于我用于测试master卡的regex^5[1-5][0-9]{14}$, 序列“54”可能导致匹配的主卡,但“56”将失败。应用 /^5[1-5][0-9]{14}$/。test不适用于这种情况,因为它只匹配完整序列 如何使用javascript中的正则表达式实现这种“匹配开始”逻辑 感谢您的帮助。您需要有两个RegExp,一个进

我正在根据提供的正则表达式编写一个信用卡验证器

我知道应用正则表达式可以告诉我某个数字序列“匹配”或“不匹配”。但我不知道如何测试“可能导致匹配”的子序列

例如: 对于我用于测试master卡的regex
^5[1-5][0-9]{14}$
, 序列“54”可能导致匹配的主卡,但“56”将失败。应用
/^5[1-5][0-9]{14}$/。test
不适用于这种情况,因为它只匹配完整序列

如何使用javascript中的正则表达式实现这种“匹配开始”逻辑


感谢您的帮助。

您需要有两个RegExp,一个进行最终验证(如表单提交和模糊),另一个在框仍在编辑时进行检查

HTML


Edit注意weakCheck函数中的RegExp是{0,14}而不是{14}。我将把5[1-5]部分留给您。

您需要有两个RegExp,一个进行最终验证(如表单提交和模糊),另一个在框仍在编辑时进行复选

HTML


Edit注意weakCheck函数中的RegExp是{0,14}而不是{14}。我将把5[1-5]部分留给您。

您是说在使用
/^5[1-5][0-9]{14}$/
进行测试之前,您想使用
/^5[1-5][0-9]{14}$/进行测试吗?我想使用/^5[1-5][0-9]{14}$/来测试子序列。我不想为每个“keyup”事件编写不同的正则表达式。在某些方面,请求似乎非常有效,但我的一部分人认为,如果不破坏语言的某些方面,这在正则表达式库中是不可能的。正如LastCoder所说,如果您愿意为每个字段进行一些定制和正则表达式重新编码,那么这是完全可能实现的。我找不到一个进行增量测试的库。如果有人构建了一个,那就太棒了。从逻辑上来说,“可能导致匹配”意味着当前在框中的内容与完整匹配要求的某些子序列匹配。因此,
/^5?[1-5]?[0-9]{0,14}$/
可能是“可能导致匹配”的最通用的方法,但是您给出的示例“56”也将匹配此模式,因此归结为
/^5?[1-5]?[0-9]{0,14}$/
之间的决定,其中包括“56”和
/^5[1-5][0-9]{0,14}$/
不会。您是说在使用
/^5[1-5][0-9]{14}$/
进行测试之前,您想使用
/^5[1-5][0-9]{14}$/进行测试吗?我想使用/^5[1-5][0-9]{14}$/来测试子序列。我不想为每个“keyup”事件编写不同的正则表达式。在某些方面,请求似乎非常有效,但我的一部分人认为,如果不破坏语言的某些方面,这在正则表达式库中是不可能的。正如LastCoder所说,如果您愿意为每个字段进行一些定制和正则表达式重新编码,那么这是完全可能实现的。我找不到一个进行增量测试的库。如果有人构建了一个,那就太棒了。从逻辑上来说,“可能导致匹配”意味着当前在框中的内容与完整匹配要求的某些子序列匹配。因此,
/^5?[1-5]?[0-9]{0,14}$/
可能是“可能导致匹配”的最通用的方法,但是您给出的示例“56”也将匹配此模式,因此归结为
/^5?[1-5]?[0-9]{0,14}$/
之间的决定,其中包括“56”和
/^5[1-5][0-9]{0,14}$/
不会。为什么还要麻烦使用
[0-9]{0,14}
?你没有使用匹配来做任何事情,而且它们在技术上是可选的。@h2ooooooo-所以如果有人在触发onblur事件之前键入“5 5 Z!@#”,他们就会知道这是错误的。啊,很公平,没有看到你有结束锚。为什么还要麻烦使用
[0-9]{0,14}
?你没有使用匹配来做任何事情,而且从技术上来说它们是可选的。@h2ooooooo-因此,如果有人在触发onblur事件之前键入“5 5 Z!@#”,他们会知道这是错误的。啊,很公平,没有看到你有结束锚。
<input type="text" id="txtCC">
function finalCheck() {
    if(/^5[1-5][0-9]{14}$/.test(this.value)) {
        this.style.color = "green";
    } else {
        this.style.color = "red";
    }
}
function weakCheck() {
    if(/^5[1-5][0-9]{0,14}$/.test(this.value)) {
        this.style.color = "green";
    } else {
        this.style.color = "red";
    }
}
var tb = document.getElementById("txtCC");
tb.onblur = finalCheck;
tb.onkeyup = weakCheck