自定义信用卡正则表达式

时间:2018-07-18 11:10:20

标签: regex

我正在使用具有以下条件的自定义信用卡验证器:

  • 它必须以4,5或6开头。
  • 它必须完全包含16位数字。
  • 它只能包含数字app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name: req.query.first_name , lastname: req.query.last_name , password: req.query.password , mobile: req.query.user_mobile , address: req.query.user_address }; query = db.query("insert query", [params] , (err, result) => { res.end(JSON.stringify(response)); }) })
  • 它可能有4位一组的数字,中间用一个连字符(0-9)隔开。
  • 不得使用-' '等任何其他分隔符。
  • 它不能包含4个或更多连续的重复数字。

我找不到满足最后一个条件的正则表达式。

对于其他情况,我有以下正则表达式:

'_'

1 个答案:

答案 0 :(得分:0)

对于最后一种情况,您可以使用否定的lookahead来断言其后不是数字,然后是3或3倍以上的可选连字符和数字。

已添加部分(?![-\d]*([0-9])(?:-?\1){3,})

的说明
  • (?!)负向超前
    • [-\d]*匹配数字或连字符零次或多次
    • ([0-9])分组捕获数字
    • (?:-?\1){3,}在一个非捕获组中重复3次或更多次,一个可选的连字符-?后跟backreference到在第1组中捕获的数字
  • )近距离否定预测

您的带有正则表达式的正则表达式可以断言行的开头^和结尾$

^(?![-\d]*([0-9])(?:-?\1){3,})[456][0-9]{3}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}$