大家好,有以下正则表达式:
/([A-Z][\w-]*(\s+[A-Z][\w-]*)+)/
我尝试过不同的方式,但我不是正则表达式的专业人士。所以,这就是想要做的事情:
答案 0 :(得分:0)
为了帮助您理解,这就是您所拥有的:
[A-Z]
:A-Z类中的一个字符[\w-]*
:零个或多个单词字符或超量的串联(...)+
:一个或多个:
\s+
:至少一个空格[A-Z]
:A-Z类中的一个字符[\w-]*
:零个或多个单词字符或超量的串联这就是你想要的:
[A-Z]
:大写字母[\w-]*
:零个或多个单词字符或超量的串联\s+
:至少一个空格[a-z]
:小写字母[\w-]*
:零个或多个单词字符或超量的串联\s+
:至少一个空格[A-Z]
:大写字母[\w-]*
:零个或多个单词字符或超量的串联那是:
[A-Z][\w-]*\s+[a-z][\w-]*\s+[A-Z][\w-]*
您可能想要做一些小改动。我想你可以自己做。
仅匹配3个以上字符的规则是\w{3,}
。如果要将第一个字符大写,请使用[A-Z]\w{2,}
。
答案 1 :(得分:0)
(\w\w\w+)|(\w+ [a-z]+ \w+)
- 此代码搜索包含至少3个字母或至少包含1个符号,空格,小写字母,1 +符号的单词的单词。如有必要,您可以使用\w
切换[A-Z]
。
如果您的3个单词短语必须包含2个带大写字母的单词,请将第二个括号更改为([A-Z]\w* [a-z]+ [A-Z]\w*)
。在这里试试:https://regex101.com/r/E3IPTj/1
答案 2 :(得分:0)
不确定您的限制范围,但一些“构建块”可能会有所帮助。 id也建议刚刚开始我不知道最近有哪些网站可以很好地处理学习正则表达式但是当我开始时我使用了以下http://www.regular-expressions.info/tutorial.html(这已经很多年了,网站确实反映了它的年龄可以这么说)
按照您的示例:Institute of Technology
您只需知道一些事物,字符集(以及如何使用匹配长度)和空间。
字符集匹配一个长度(默认情况下)并且类似于例如[abc]
,它将匹配a,b或c,并且还支持字符范围(az)/分组(例如。\ d \ n所有数字)。
可以使用:
+
- 一个或多个(例如:a +,[abc] +,\ d +)*
- 零或更多(例如:a *,[abc] *)这个你可能想要的,但这取决于你
{min, max}
- 具体范围,例如。 b {3,5}将匹配3-5个连接的'b'字符(bbb,bbbb,bbbbb)max可以省略`{min,}以至少具有最小字符但没有最大值使用“”(空格)完成空格,(
\s
匹配任何空格字符(等于[\r\n\t\f\v ]
)(空格,制表符,换行符,...)< / p>
在您的示例中,它是一个区分大小写的问题或不是如果不区分大小写我们可以使用简单的[A-Za-z]+
来匹配至少一个长度的大写和小写az,以及空间我们得到的东西是
/[A-Za-z]+ [A-Za-z]+ [A-Za-z]+/
就这么简单。对于不区分大小写的匹配,还有一个选项标志,我们可以使用i
,这将导致
/[a-z]+ [a-z]+ [a-z]+/i
如果您确实希望具有区分大小写匹配,则需要按照您喜欢的方式将它们分开:
/[A-Z][a-z]* [a-z]+ [A-Z][a-z]*/ // (*A a A*)
作为一个小小的改动,我也将+
更改为*
,因此不需要小写部分,这也取决于您。
另请注意,为了匹配字符串的开头,您需要使用^
并匹配字符串的结尾使用$
以上示例将匹配任何段,而不是整个输入,例如: qhg8Institute of Technology8tghagus
可以运作
/^[A-Z][a-z]* [a-z]+ [A-Z][a-z]*$/ // case sensitive (Aa a Aa)
/^[a-z]+ [a-z]+ [a-z]+$/i // case insensitive
显然还有很多东西可以用来扩展/优化这个,但正则表达式是如此可定制的,这完全取决于需要他们指定他/她的限制/要求的人。
作为旁注,我注意到人们使用\w
进行单词字符,但这也包括数字,_和特殊语言字母,如à,ü等。再次由您决定如何处理。< / p>