javascript - 使用自定义规则进行域名验证

标签 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规则应该仅适用于“qwerty” ”而不是“abcde”。谁能帮帮我。

提前致谢

最佳答案

您可以使用以下正则表达式:

/^(?!.{257})[A-Za-z0-9-]{3,63}\.(?:[A-Za-z0-9-]+\.)*[a-zA-Z]{2,6}$/

请参阅regex demo

详细信息:

  • ^ - 字符串开头
  • (?!.{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} 限制量词仅应用于第一个 之前的字符 block 。 .

关于javascript - 使用自定义规则进行域名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240200/

相关文章:

javascript - 如何在使用 "select all"运算符(即使用 jquery 的 "* ")时获取被单击的元素?

javascript - 为什么一个 $(document).ready(function() { 会阻止另一个 $(document).ready(function() { 运行?

javascript - 如何在 JavaScript 中导入 json 文件?

sql - 使用 Oracle INSTR 函数搜索多个字符串

c# - 请帮助 c# 中的正则表达式

javascript - 正则表达式匹配第一个字符之前和最后一个字符之后的空格或符号之间的字符串

javascript - 如何在同一事件中调用 typescript 箭头函数和javascript函数

javascript - when 在 aurelia 验证中如何工作

javascript - 范围变量更改时更改指令

javascript - 从外部更改 Phaser 状态