正则表达式 - 信用卡验证
Regex - Credit Card validation
我正在寻找一种方法来验证信用卡模式的开头。因此,例如,让我们以万事达卡为例。
它说(参考:https://www.regular-expressions.info/creditcard.html):
MasterCard numbers either start with the numbers 51 through 55...
我正在寻找当用户输入时 returns 为真的正则表达式:
const regex = /^5|5[1-5]/; // this is not working :(
regex.test("5"); // true
regex.test("51"); // true
regex.test("55"); // true
regex.test("50"); // should be false, but return true because it matches the `5` at the beginning :(
应该是:
const regex = /^5[1-5]/;
您的正则表达式匹配以 5
开头的字符串或其中任何位置具有 51
到 55
的字符串,因为 ^
仅在左侧|
.
的一侧
如果你想允许部分进入,你可以使用:
const regex = /^5(?:$|[1-5])/;
请参阅 以了解匹配最流行卡片的正则表达式。
您是否在用户输入时进行验证?如果是这样,您可以在第一个选项中添加一个行尾 ($),这样它 returns 只有在以下情况下才为真:
- 5 是迄今为止输入的唯一字符
- 字符串以 50-55 开头
const regex = /^(5$|5[1-5])/;
regex.test("5"); // true
regex.test("51"); // true
regex.test("55"); // true
regex.test("50"); // false
我正在寻找一种方法来验证信用卡模式的开头。因此,例如,让我们以万事达卡为例。
它说(参考:https://www.regular-expressions.info/creditcard.html):
MasterCard numbers either start with the numbers 51 through 55...
我正在寻找当用户输入时 returns 为真的正则表达式:
const regex = /^5|5[1-5]/; // this is not working :(
regex.test("5"); // true
regex.test("51"); // true
regex.test("55"); // true
regex.test("50"); // should be false, but return true because it matches the `5` at the beginning :(
应该是:
const regex = /^5[1-5]/;
您的正则表达式匹配以 5
开头的字符串或其中任何位置具有 51
到 55
的字符串,因为 ^
仅在左侧|
.
如果你想允许部分进入,你可以使用:
const regex = /^5(?:$|[1-5])/;
请参阅
您是否在用户输入时进行验证?如果是这样,您可以在第一个选项中添加一个行尾 ($),这样它 returns 只有在以下情况下才为真:
- 5 是迄今为止输入的唯一字符
- 字符串以 50-55 开头
const regex = /^(5$|5[1-5])/;
regex.test("5"); // true
regex.test("51"); // true
regex.test("55"); // true
regex.test("50"); // false