正则匹配问题:需匹配0个或多个点的字符串但仅能匹配多个点
解决正则匹配0个或多个点的问题
我来帮你搞定这个正则匹配的问题!从你描述的情况来看,当前正则的核心问题在于匹配点的部分用了+量词——这个量词要求至少匹配1次点,所以没有点的字符串自然无法通过匹配,反而能匹配带多个点的内容。
要实现「匹配包含0个或多个点的字符串」,只需要把量词从+换成*就可以了,*表示匹配0次或任意多次,刚好覆盖你需要的两种场景。
具体示例修改
假设你的原正则是类似这样(要求至少一个点):
^(\w+\.)+\w+$
这个正则只能匹配abc.def、sub.abc.def这类带点的字符串,无法匹配abc(无点)。
修改后的正则:
^(\w+\.)*\w+$
现在它可以完美匹配:
abc(0个点)abc.def(1个点)sub.abc.def(多个点)
如果你的场景是允许任意字符搭配0个或多个点(无其他字符限制),正则可以写成:
^.*\.?.*$
(注:如果需要排除空字符串,可以调整为^.+$,具体根据你的业务规则调整)
关键知识点回顾
+:匹配前面的元素1次或多次(至少1次)*:匹配前面的元素0次或多次(可以没有)
只要把点对应的量词从+改成*,就能解决你遇到的匹配异常问题啦。
内容的提问来源于stack exchange,提问作者yyc2001
相关产品推荐
相关产品推荐

