我需要匹配一个包含dot(.
)但没有dot的字符串。
以下是示例模式:
res:shanghai:45610
res:chicago.usa:57450
我使用的正则表达式:
res:[\w]{4,15}:[1-9][0-9]*
它只匹配res:shanghai:45610
,但应该同时匹配两者。
由于第二个图案在chicago.usa
之间包含一个点(.
),因此它不匹配。
如何修改正则表达式以匹配res:chicago.usa:57450
。具体来说,它应该允许单词字符中间有一个点,同时仍然限制字段的长度为最小4个字符,最大15个字符(包括点)。
Above test case on regex101。
2条答案
按热度按时间ca1c2owp1#
只需将点添加到字符类:
但它也会匹配所有点的字符串。
mec1mxoz2#
基本上,你希望中间的部分与两者都匹配
和
Lookahead可用于执行“AND”操作。
另一种可能性是在正则表达式之外进行长度检查。