我想限制用户以 Hello World 的形式输入数据。我想使用正则表达式,但是我不太擅长。
我的尝试是:^([A-Z]{1})([a-z]{1,})([ ])?([A-Z]{1})?([a-z]{1,})?$
对于以([])开头的组?应该是可选的...
例如,以下是有效条目:
你好,你好世界,人们,人们谈话
以下无效:
people , people talk , People talk , people talk , hello
如先前示例所示,此REGEX
必须区分大小写。
答案 0 :(得分:3)
您应该将整个第二个单词作为一个单独的组,而不是将?
放在每个部分之后。否则,单词之间的空格是可选的,因此您将允许两个单词之间没有空格,并且首字母大写是可选的,因此您将允许Hello world
。
^[A-Z][a-z]+(\s[A-Z][a-z]+)?$
由于模式默认匹配一次,因此不需要{1}
。 +
通常用于匹配1个或多个事物,而不是{1,}
。并且\s
可以匹配任何空白。
您需要使用^
和$
锚定正则表达式,以便整个输入必须与之匹配。