Skip to content

正则表达式 #9

@kevinyan815

Description

@kevinyan815

验证字符串匹配模式

package main

import (
	"fmt"
	"regexp"
)

func main() {
	re := regexp.MustCompile(`^\d+$`)
	fmt.Println(re.MatchString("13877474"))
}

子模式匹配

package main

import (
	"fmt";
	"regexp"
)

func main() {
re := regexp.MustCompile("\\$\\{(.*?)\\}")
match := re.FindStringSubmatch("git commit -m '${abc}'")
	fmt.Println(match)
}

SKU有两类一类是定值的比如"sku_goods1_9000_0",这种就需要验证下单参数的中的金额与SKU中的金额是否是一样, 另外一种充值订单对应的SKU不是定值的就不用验证,比如"sku_recharge_other_0",写一个函数完成这个功能。

// 检查创建订单时参数里的amount与skuSymbol中的amount是否一致
func checkSkuAmount(skuSymbol string, amount int64) bool {
	if strings.Contains(skuSymbol, "other") {
		return true
	}
	re := regexp.MustCompile(`[A-Za-z_]+?(\d+?)_\d+$`)
	match := re.FindStringSubmatch(skuSymbol)
	if match == nil {
		return false
	}
	skuAmount, err := strconv.ParseInt(match[1], 10, 64)
	if err != nil || skuAmount != amount {
		return false
	}

	return true
}

正则替换

隐藏姓名中间部分,只展示首尾

func HideUserName(userName string) string {
	if userName == "" {
		return ""
	}
	re := regexp.MustCompile(`^(.).+?(.)?$`)
	result := re.ReplaceAllString(userName, `$1*$2`)
	return result
}

golang 正则库CheatSheet

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions