正则表达式:前瞻和后视,检查一下.(点)用作十进制vs全停

kil*_*wuk 6 .net regex numbers decimal

我已经很好地了解了网络上的答案,但似乎无法让它发挥作用.

我开发了以下正则表达式:

    (?<![^\d][\\])[\.](?![\d])
Run Code Online (Sandbox Code Playgroud)

目标是识别任何'.' (点)未转义或属于十进制数的一部分.

即)

  • abc.co.uk,两个点都应该匹配
  • ab0.co.uk,两个点都应该匹配
  • abc.0.uk,两个点都应该匹配
  • abc\.co.uk,只有第二个点匹配
  • 0.00,点不应该匹配
  • abc0.0.uk,第一个点不匹配(这是可接受的结果),第二个点应该

目前它适用于上述所有情况,除了:

  • abc.0.uk,两个点都应该匹配

有什么想法吗?似乎后视工作正常,但前瞻不是.

对于任何正则表达的大师们来说,这肯定是一件容易的事!

仅供参考.我正在开发.net 4

ste*_*ema 6

试试这个吧

(?<![\\\d])\.(?=\d)|(?<=[^\D\\])\.(?!\d)|(?<=[^\d\\])\.(?!\d)
Run Code Online (Sandbox Code Playgroud)

在Regexr上看到它

我分三步打破了它.

  1. 匹配如果之前不是转义字符而不是数字而后面是数字.

  2. 匹配如果之前不是转义字符和数字而后面不是数字

  3. 匹配如果之前不是转义字符而不是数字而后面不是数字