Javascript 使用自定义规则进行域名验证
我正在使用自己的自定义规则处理正则表达式 规则是主机名必须为3-63个字符, 全名必须为256个字符, 除点(.)、连字符(-)外,无特殊字符 我尝试了这个Javascript 使用自定义规则进行域名验证,javascript,jquery,regex,Javascript,Jquery,Regex,我正在使用自己的自定义规则处理正则表达式 规则是主机名必须为3-63个字符, 全名必须为256个字符, 除点(.)、连字符(-)外,无特殊字符 我尝试了这个var regx=/^([A-Za-z0-9-]{3,63}?\)+[A-Za-Z]{2,6}$/ 但问题是模式适用于点(.)之后的下一个字符串。我的意思是 例如:“qwerty.abcde.com” 在上面的例子中,“qwerty”应该是3-63个字符,但“abcde”可以是任意数量的字符。我的模式适用于点后的下一个字符串。3-63规则应该
var regx=/^([A-Za-z0-9-]{3,63}?\)+[A-Za-Z]{2,6}$/代码>
但问题是模式适用于点(.)之后的下一个字符串。我的意思是
例如:“qwerty.abcde.com”
在上面的例子中,“qwerty”应该是3-63个字符,但“abcde”可以是任意数量的字符。我的模式适用于点后的下一个字符串。3-63规则应该只适用于“qwerty”而不适用于“abcde”。有人能帮我吗
提前感谢您可以使用以下正则表达式:
/^(?!.{257})[A-Za-z0-9-]{3,63}\.(?:[A-Za-z0-9-]+\.)*[a-zA-Z]{2,6}$/
见
详细信息:
^
-字符串的开头
(?!.{257})
-如果字符串包含257个或更多字符(换行字符除外),则会导致匹配失败的负前瞻
[A-Za-z0-9-]{3,63}
-3至63字母数字和-
字符
\。
-一个点
(?:[A-Za-z0-9-]+\)*
-零个或多个
[A-Za-z0-9-]+
-1个或多个字母数字和-
字符
\。
-一个点
[a-zA-Z]{2,6}
-2到6个ASCII字母
$
-字符串结束
因此,负前瞻检查整个字符串长度,{3,63}
限制量词仅应用于第一个
必须为256或最多为256之前的字符块?我想你的意思是要达到。试试@WiktorStribiżew谢谢你纠正我。最多0-256个字符请尝试我的正则表达式,但我认为这正是您需要的。您甚至可以将(?![A-Za-z0-9.-]{257})
替换为(?!{257})
,使其更短。@WiktorStribiżew谢谢您救了我一天。