douhuike3199 2019-06-27 11:10
浏览 123

正则表达式中匹配没有小写和至少一个大写?

I need to find a regex in go that match when there is no lowercase and at least one uppercase.

For example:

"1 2 3 A"  : Match
"1 2 3"    : No match
"a A "     : no match
"AHKHGJHB" : Match

This work but in PHP not in Go (the ?= token isn't working in Go):

(?=.*[A-Z].*)(?=^[^a-z]*$)

In my code this line call the regex:

isUppcase, _ := reg.MatchString(`^[^a-z]*$`, string)

Actually my regex catch when there is no lowercase but I want it also to catch when there is at least one uppercase.

  • 写回答

1条回答 默认 最新

  • dtoq41429 2019-06-27 11:12
    关注

    You may use

    ^\P{Ll}*\p{Lu}\P{Ll}*$
    

    Or, a bit more efficient:

    ^\P{L}*\p{Lu}\P{Ll}*$
    

    See the regex demo.

    Details

    • ^ - start of string
    • ^\P{L}* - 0 or more chars other than letters
    • \p{Lu} - an uppercase letter
    • \P{Ll}* - 0 or more chars other than lowercase letters
    • $ - end of string.

    Go test:

    package main
    
    import (
        "regexp"
        "fmt"
    )
    
    func main() {
        re := regexp.MustCompile(`^\P{L}*\p{Lu}\P{Ll}*$`)
        fmt.Println(re.MatchString(`1 2 3 A`))   
        fmt.Println(re.MatchString(`1 2 3`))   
        fmt.Println(re.MatchString(`a A`))   
        fmt.Println(re.MatchString(`AHKHGJHB`))   
        fmt.Println(re.MatchString(`Δ != Γ`)) 
    }
    

    Output:

    true
    false
    false
    true
    true
    
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算