Javascript 带有jqBootstrapValidation.js的FQDN正则表达式

Javascript 带有jqBootstrapValidation.js的FQDN正则表达式,javascript,regex,twitter-bootstrap,fqdn,Javascript,Regex,Twitter Bootstrap,Fqdn,我已经使用创建了一个表单来验证它 但是,我似乎无法使FQDN格式字段的正则表达式正常工作 <input class="form-control" type="text" name="cn" id="commonname" data-validation-regex-regex="/^(?=.{1,254}$)((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}$/i" data-validation-regex

我已经使用创建了一个表单来验证它

但是,我似乎无法使FQDN格式字段的正则表达式正常工作

<input class="form-control"
type="text"
name="cn"
id="commonname"
data-validation-regex-regex="/^(?=.{1,254}$)((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}$/i"
data-validation-regex-message="Must enter a vaild FQDN" required>

它使我输入的任何FQDN无效

我知道正则表达式有几种不同的格式


我是否对javascript使用了错误的格式?

要帮助调试,请尝试下面的1-6,并报告使用的通过/失败情况。
输入远程应匹配的数据

 1.     "/(?!)/"                      // Should FAIL
 2.     "/^(?=.{1,254}$)/"            // Should PASS
 3.     "/(?=[\S\s]{1,254})/"         // Should PASS


 // 4 & 5  have \. replaced with [.]
 // and added (?i)
 // (If JS doesn't support (?i) modifiers, remove them
 // -------------------------------------------------------

     // this has no lookaheads nor anchors
     4.      "/(?i)((xn--)?[a-z0-9]+(-[a-z0-9]+)*[.])+[a-z]{2,63}/"

     // this has anchors, but no lookaheads
     5.      "/^(?i)((xn--)?[a-z0-9]+(-[a-z0-9]+)*[.])+[a-z]{2,63}$/"

     // this has anchors and lookaheads
     6.      "/^(?i)(?=.{1,254}$)((?=[a-z0-9-]{1,63}[.])(xn--)?[a-z0-9]+(-[a-z0-9]+)*[.])+[a-z]{2,63}$/"

当你只需要做一个nslookup的时候,为什么还要麻烦使用正则表达式呢?但是,除非域已经注册并且DNS设置正确,否则这将无法工作?因此,如果我输入“a.b.cd”,这是有效的FQDN吗?它将匹配你编造的任何表达式。重点是,在你试图解决它之前,你真的不会知道它是一个有效的条目。我明白了。我想我应该编辑/澄清我的问题。我希望验证FQDN格式,而不是实际的FQDN。我最初看的是这个感谢@sln。我已经尝试了以上所有方法,但没有成功。我已经联系了编写脚本的人,要求得到进一步的指导。我发现以下正则表达式是有效的:
([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])*([a-zA-z][a-zA-Z0-9-]*[a-zA-Z0-9])
,但我不知道为什么?这和上面的格式不同吗?