如果在字符串的开头或结尾处有字符,则在正则表达式中不匹配

时间:2016-07-05 22:14:03

标签: javascript regex

如果&#39; - &#39;我正在尝试使用正则表达式来匹配在字符串的末尾。 这是我的正则表达式的一部分(这是查看网址的域名部分,它在开头或结尾都没有符号,但可以在字符串中间有&#39; - &#39;:< / p>

(([A-Z0-9])([A-Z0-9-]){0,61}([A-Z0-9]?)[\.]){1,8}

这也必须匹配1个字符的域名 - 这就是我的原因?在最后的角色&amp;中心部分为0,61。

因此,简而言之,有一个正则表达式代码可以防止匹配&#39; - &#39;如果它在字符串的末尾?如果你可以阻止它开始,那么这也会很棒。

匹配输入:网站。
输入无效:-site。或网站 - 。

2 个答案:

答案 0 :(得分:1)

  

简而言之,有一个正则表达式代码,以防止匹配' - '如果它在字符串的末尾?如果你可以阻止它开始,那么这也会很棒。

是的,你可以使用负向前瞻:

/^(?!-|.*(\.[.-]|-\.|-$))(?:[A-Z0-9-]{0,62}\.){1,8}[A-Z0-9]{3}$/gim

RegEx Demo

答案 1 :(得分:0)

尝试:

^(([A-Z0-9^-])([A-Z0-9-]){0,61}([A-Z0-9]?)[\.^-]){1,8}$

我不是100%肯定它可以与JS正则表达式一起使用。我的想法是:^匹配字符串的开头,$匹配结束,字符类中的^-表示“任何不是连字符”。