正则表达式表达式否定设置不起作用golang

I have a regular expression that I'v verified in some online regex parsers

https://regexr.com/3h5h8

^(.*\.(?!(htm|html|class|js)$))?[^.]

How ever implementing this in golang doesn't match the same way the online regex parser does

package main

import (
    "fmt"
    "regexp"
    "strconv"
)

type ParsedConfigFile struct {
    prefix      string
    instanceNum int
    extension   string
}

// tries to guess config type and instance id from files
func parseFiles(files []string) {
    re := regexp.MustCompile(`(type1|type2)_(\d+)\.(csv|ini)`)
    var matchedFiles []ParsedConfigFile

    for _, file := range files {
        match := re.FindStringSubmatch(file)

        // we have 3 groups we try to capture in the regex + 1 for the full match
        EXPECTED_MATCH_COUNT := 4

        if len(match) == EXPECTED_MATCH_COUNT {
            fmt.Printf("trying: %v
", file)
            instanceNum, strConvErr := strconv.Atoi(match[2])

            if strConvErr == nil {
                matchedFiles = append(matchedFiles, ParsedConfigFile{
                    prefix:      match[1],
                    instanceNum: instanceNum,
                    extension:   match[3],
                })
            }
        }

    }
}

func main() {
    files := []string{
        "type1_12.ini",          // match
        "type1_121111.ini",      // match
        "type2_1233.csv",        // match
        "type2_32.csv",          // match
        "type1_.ini",            // don't match
        "type2_32.csv.20141027", // don't match
        "type1_12.",             // don't match
        "_12.ini.",              // don't match
        "_12.ini.11",            // don't match
        "type1_81.ini.20141028", //dont match
        "XNGS.csv",              // don't match
    }

    parseFiles(files)
}

Removing the negated set yields some results but I'm unsure what I have to do mimic the behavior in other regex parser or ignore matches at the end of the filenames

playground link https://play.golang.org/p/6HxutLjnLd

Go's stdlib regexp engine is RE2 which does not support lookaround (e.g. the ?! negative lookahead operator). You can find the complete set of supported Regular Expression syntax in the documentation: https://golang.org/pkg/regexp/syntax/

If all you need is to ensure that the string ends in a three-character file extension, then you can simplify your expression down to just \.\w{3}$ - a literal period, followed by three characters, followed by the end of the string.