我已找到此链接(www.regextester.com/103452)来验证基于REGEX的内容。
(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)
但是有一个问题,Oracle无法识别正向/负向超前。
第一个正向搜索(?=^.{4,253}$)
很简单,我可以验证字符串的长度,但是对于负向搜索(?!-)
,我很难确定它。
答案 0 :(得分:1)
((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+
表示1个或多个重复:
(?!-)[a-zA-Z0-9-]{0,62}
-0到62个字母,数字或-
,序列的第一个字符不等于-
[a-zA-Z0-9]
-字母或数字\.
-点。改写:可以包含1到63个字母,数字或-
,而-
之前的序列的第一个或最后一个字符不包含.
。
改为使用([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+
,它将匹配1个或多个重复项:
[a-zA-Z0-9]
-字母或数字([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
-由0到61个字母,数字或-
组成的可选序列,然后是1个必填字母或数字\.
-点。因此,它再次匹配1到63个字符,并且在数字字母连字符序列的开头或结尾没有-
。