简单的正则表达式无法识别字符'e' - 为什么?

Ofi*_*fir 1 c# regex

我写了一个非常简单的正则表达式,需要匹配下一个模式: word.otherWord - Word必须至少有2个字符,并且不能以数字开头.

我写了下一个表达式:

[a-zA-Z][a-zA-Z](.[a-zA-Z0-9])+
Run Code Online (Sandbox Code Playgroud)

我使用Regex测试器测试它,它似乎在大多数情况下工作,但当我尝试一些以'e'结尾的输入时,它不起作用.

例如: Hardware.Make不起作用,但Hardware.Makee工作正常,为什么?我该如何解决?

查看测试仪结果

Mar*_*zek 5

那是因为你的正则表达式寻找长度均匀的输入.

您有两个匹配的字符[a-zA-Z][a-zA-Z],然后另外两个字符匹配(.[a-zA-Z0-9])作为一个重复一次或多次的组(因为+).

你可以在这里看到它:http://regex101.com/r/fW2bC1

我想你需要那个:

[a-zA-Z]+(\.[a-zA-Z0-9]+)+
Run Code Online (Sandbox Code Playgroud)

  • 除了偶数长度问题之外,`.`应该被转义,因为模式应该包含一个逐字的`.`,而不是通配符. (3认同)