RegEx用于匹配具有特殊边界的两个字母

时间:2019-05-05 23:28:45

标签: c regex

我要确保用户输入具有:

  • 开头两个字母
  • 以及对这两个字母后面的任意数量的可选空格字符的支持。
  • 另外,如果提供了至少一个空格字符,则可以选择在其后允许字母,数字或.个字符。

这是我目前拥有的表情:

[a-zA-Z][a-zA-Z] (?\\s+ (?a-zA-Z0-9.))

这是我的想法:

[a-zA-Z][a-zA-Z]确保输入的至少两个字母

(?\\s+开始一个可选语句。此可选语句必须至少以一个空格开头(我在Windows上,这就是为什么我有两个斜杠的原因)。

(?a-zA-Z0-9.))完成可选语句。因此,如果提供至少一个空格,则至少要有一个可选字符,数字或。也可以添加。

例如,abab ab .sab .asd2应该都是有效的输入。

我该如何解决这个问题?

2 个答案:

答案 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.]*