正则表达式 - 单词边界

regex - word boundaries

我有两个正则表达式来识别两种不同的词。它们是:

  1. 标识符:[_a-zA-Z][_0-9A-Za-z]*
  2. 对于数字:(\d*\.\d+)(([eE][-+]?\d+))|\d+

我想知道为什么单词 12aaa 被视为 2 个单词,即数字 (12) 后跟标识符 (aaa)。

我的目的是将单词 12aaa 视为错误的标识符。我该怎么做?

在正则表达式的两端添加一个 \b(匹配词边界)。这将迫使它们仅在单词边界内匹配。因此 12aaa 将不再匹配为数字或标识符。

此外,正如我在评论中提到的,您应该在 .在您的号码正则表达式中。否则它将匹配 4a4.