我正在尝试制作一个满足以下条件的JavaScript正则表达式
到目前为止,我已经来关注正则表达式
^[^.][a-zA-Z0-9-_\.']+[^.]$
但是,这允许中间连续的点字符,并且不检查长度。 谁能指导我如何添加这两个条件?
答案 0 :(得分:2)
这是一种似乎可行的模式:
^(?!.*\.\.)[a-zA-Z0-9_'-](?:[a-zA-Z0-9_'.-]{0,62}[a-zA-Z0-9_'-])?$
以下是正则表达式模式的说明:
^ from the start of the string
(?!.*\.\.) assert that two consecutive dots do not appear anywhere
[a-zA-Z0-9_'-] match an initial character (not dot)
(?: do not capture
[a-zA-Z0-9_'.-]{0,62} match to 62 characters, including dot
[a-zA-Z0-9_'-] ending with a character, excluding dot
)? zero or one time
$ end of the string
答案 1 :(得分:1)
您可以使用this
正则表达式
^(?!^[.])(?!.*[.]$)(?!.*[.]{2})[\w.'-]{1,64}$
正则表达式细分
^ #Start of string
(?!^[.]) #Dot should not be in start
(?!.*[.]$) #Dot should not be in start
(?!.*[.]{2}) #No consecutive two dots
[\w.'-]{1,64} #Match with the character set at least one times and at most 64 times.
$ #End of string
正则表达式中的更正
-
不应介于字符类之间。它表示范围。避免在两者之间使用它[a-zA-Z0-9_]
等同于\w
答案 2 :(得分:1)
这是我的主意。已使用\w
(字字符为short)。
^(?!.{65})[\w'-]+(?:\.[\w'-]+)*$
^
位于start (?!.{65})
look ahead,最多不超过64个字符[\w'-]+
个[a-zA-Z0-9_'-]
中的一个或多个(?:\.?[\w'-]+)*
non capturing group,其中包含句点.
,然后是一个或多个[a-zA-Z0-9_'-]
,直到$
结束