最多匹配两个词的Regex [关闭] 。


我想创建的Regex最多只能匹配到单词(没有数字),并且将两个用空格隔开的单词视为一个字符串,如果有两个单词,它们都必须以大写字母开头。

所以举个例子

“String” -> Match

“两根弦”-> 匹配

“一二三”->不匹配(字符串有两个以上的字)

“1个字” -> 没有匹配(字符串包含一个或多个数字)

“两个字符串” -> 不匹配(其中一个字符串不是以大写字母开头的)。

我试着用不同的方法做一个大的正则表达式,但是没有用。真的很感谢帮助。

EDIT: 我不知道是否可以为它做一个大的Regex,或者我应该把它分成几个小的Regex?

解决方案:

表达式

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

匹配任何一个或两个以大写字母开头的单词,并且后面有0个或更多的小写字母。匹配:”是”、”两串”、”A B”。”Yes”, “Two strings”, “A B” 不匹配: “Y3s”,”两根弦”,”一二三”,”玩家1”

如果允许在单词内使用大写字母(如 “JavaScript”),你可以使用。

 ^([A-Z][A-Za-z]*( [A-Z][A-Za-z]*)?)$

如果你也想让数字和下划线在你的词里被允许(比如 “C00k13_”)就用:

^([A-Z]\w*( [A-Z]\w*)?)$

Btw. ^ (起)和 $ (以)结尾,确保只有整个字符串可以匹配。例如 “Alpha Beta Gamma” -> 不匹配 “Alpha Beta” -> 匹配。

快速演示。regexr.com5381r

给TA打赏
共{{data.count}}人
人已打赏
未分类

为什么Throwable::printStackTrace持有PrintStream的锁并导致logback的死锁?

2022-9-9 3:40:20

未分类

简单计数命令的类型错误

2022-9-9 3:40:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索