我要确保用户输入具有:
.
个字符。这是我目前拥有的表情:
[a-zA-Z][a-zA-Z] (?\\s+ (?a-zA-Z0-9.))
这是我的想法:
[a-zA-Z][a-zA-Z]
确保输入的至少两个字母
(?\\s+
开始一个可选语句。此可选语句必须至少以一个空格开头(我在Windows上,这就是为什么我有两个斜杠的原因)。
(?a-zA-Z0-9.))
完成可选语句。因此,如果提供至少一个空格,则至少要有一个可选字符,数字或。也可以添加。
例如,ab
,ab
,ab .s
和ab .asd2
应该都是有效的输入。
我该如何解决这个问题?
答案 0 :(得分:0)
您尝试的问题是(?\
和(?a
都是语法错误。如果要创建可选组,则需要编写(...)?
,而不是(?...)
。
(另一个问题是您的正则表达式中的a-zA-Z0-9
实际上匹配,因为它不是字符类的一部分。)
此外,\s
(以匹配空格)在POSIX正则表达式中不存在。
我的建议:
^[a-zA-Z]{2}( +[a-zA-Z0-9.]*)?$
也就是说:
^ # beginning of string
[a-zA-Z]{2} # exactly two letters
(
\ + # one or more spaces
[a-zA-Z0-9.]* # zero or more of: letters, digits, or dot
)? # ... this group is optional
$ # end of string
答案 1 :(得分:-1)
我认为表达式[a-zA-Z]{2}?\s+?[a-zA-Z0-9.]*