正则表达式包含至少一个点

时间:2020-06-10 14:54:19

标签: regex

这是我的正则表达式:

\b(https?|www)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]*[.]{1,256}

我知道我做错了,因为我很少使用RegEx。 最后一个[.]{1,256}的想法是确保至少有一个“”。在。 因此,没有它,我得到了“ https://www”匹配项,因此我想确保至少存在一个点。 但是使用上面的表达式,它会切到第一个点,而不是整个切点。

1 个答案:

答案 0 :(得分:1)

[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]*都可以匹配一个空字符串,并且模式末尾的[.]{1,256}可以匹配1到256个点,这就是为什么匹配到一个点的原因

您可以重构模式以匹配点之前允许的所有字符,然后匹配点,然后匹配您允许的任意数量的字符以及点:

\b(https?|www)://[-a-zA-Z0-9+&@#/%?=~_|!:,;]*\.[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*

在这里

  • [-a-zA-Z0-9+&@#/%?=~_|!:,;]*-匹配0个或多个您允许的字符,但一个点即可。
  • \.-匹配一个点
  • [-a-zA-Z0-9+&@#/%?=~_|!:,.;]*-允许0个或多个字符,包括一个点。

因此,至少要匹配一个点。

相关问题