模式应该匹配带有大写字母的单词。
单词是分开的[ ]+
但最后一个词不应该[ ]
在它之后。
字数没有限制。
我设法做到了:(http://regexr.com?32s1h)
^([A-Z]{1}[a-z]+([a-z]+)?[ ]+)+$
这是为Xav Tvc Dcc_
//注意最后一个空格工作
但不是为了Xav Tvc Dcc
我怎样才能修复我的正则表达式?
模式应该匹配带有大写字母的单词。
单词是分开的[ ]+
但最后一个词不应该[ ]
在它之后。
字数没有限制。
我设法做到了:(http://regexr.com?32s1h)
^([A-Z]{1}[a-z]+([a-z]+)?[ ]+)+$
这是为Xav Tvc Dcc_
//注意最后一个空格工作
但不是为了Xav Tvc Dcc
我怎样才能修复我的正则表达式?
要求一个单词末尾不带空格:
^([A-Z]{1}[a-z]+([a-z]+)?[ ]+)*[A-Z]{1}[a-z]+([a-z]+)?$
快速 PowerShell 测试:
PS Home:> 'Xav Tvc Dcc ','Xav Tvc Dcc' -match '^([A-Z]{1}[a-z]+([a-z]+)?[ ]+)*[A-Z]{1}[a-z]+([a-z]+)?$'|%{"<$_>"}
<Xav Tvc Dcc>
如果您担心更改正则表达式可能引入的错误,您可以随时构建它:
var word = "([A-Z]{1}[a-z]+([a-z]+)";
var regex = string.Format("^({0}?[ ]+){0}$", word);
或对于您使用的任何语言都类似。
如果最后一个单词后面的空格是可选的,请使用正则表达式模式
^(?:[A-Z][a-z]*(?:[ ]+|$))+$
...如果最后一个单词后面不应该有空格,那么请使用
^(?:[A-Z][a-z]*(?:[ ]+(?=.)|$))+$