小编rog*_*rp6的帖子

Golang regexp MatchString() isn't idempotent

I not sure what's happening. The same function with same input return different results when using regexp library of golang.

package main

import (
    "fmt"
    "regexp"
)

type PaymentNetworkData struct {
    Regex string
    Name  string
}

var PAYMENT_NETWORKS = map[string]PaymentNetworkData{
    "Mastercard": {
        Regex: "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}$",
        Name:  "Mastercard",
    },
    "VisaMaster": {
        Regex: "^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$",
        Name:  "VisaMaster",
    },
}

func resolvePaymentNetwork(cardIn string) string {
    payNet := "Unknown"
    for _, v := range PAYMENT_NETWORKS {
        regex := regexp.MustCompile(v.Regex)

        if regex.MatchString(cardIn) {
            payNet = v.Name
        } …
Run Code Online (Sandbox Code Playgroud)

regex go idempotent

-1
推荐指数
1
解决办法
100
查看次数

标签 统计

go ×1

idempotent ×1

regex ×1