字符串模式后字符串的正则表达式

我有一个像这样的字符串(用点分隔的4个单词)

Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps

我需要编写一个正则表达式来查找上面的模式。

  1. 可以有 4 个或更多由点分隔的字段

  2. 第一个词应该是准确的Exactfoobar.

  3. 第二个和第三个单词不能有大写字母,但可以有 -_

  4. 第 4 个单词等可以大写 -_

我正在考虑使用组,但它在这里不起作用:

^Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-zA-Z0-9_\-.])+$

我应该如何考虑将一个字符串与另一个字符串匹配。是否可以?

在 golang 中尝试这个,但似乎无法正确使用上面的正则表达式

package main


import (

    "fmt"

    "regexp"

)


func main() {


    var validID = regexp.MustCompile(`^ Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-z0-9_\-.])+$`)


    fmt.Println(validID.MatchString("Exactfoobar.somestring.some_other-string.someStringwithCaps"))



}


结果:


false

谢谢


HUH函数
浏览 173回答 2
2回答

千巷猫影

您可以使用^Exactfoobar(?:\.[a-z0-9][a-z0-9_-]*){2}(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+$请参阅正则表达式演示^- 字符串的开头Exactfoobar- 一些话(?:\.[a-z0-9][a-z0-9_-]*){2}- 两次重复 a .,然后是一个小写字母或数字,然后是 0+ 个小写字母或数字,_或者-(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+- 1次或多次重复\.- 点[a-zA-Z0-9]- 一个字母或数字[a-zA-Z0-9_-]*- 0+ 个字母、数字或_或-$- 字符串末尾。

慕的地6264312

^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$https://regex101.com/r/PJ9V0L/1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go