正如主题所示,我需要一个JavaScript正则表达式X个字符长,它接受字母数字字符,但不接受下划线字符,并且还接受句点,但不接受句子的开头或结尾。期间也不能连续。
我几乎可以到达我想要搜索的地方,并在Stack Overflow(such as here)上阅读其他人的问题和答案。
但是,在我的情况下,我需要一个字符串,其长度必须为X个字符(例如6个),并且可以包含字母和数字(不区分大小写),也可以包含句点。
所述句点不能连续,也不能开始或结束字符串。
Jd.1.4
有效,但Jdf1.4f
不是(7个字符)。
/^(?:[a-z\d]+(?:\.(?!$))?)+$/i
是我能够使用其他人的示例构建的,但我不能让它只接受与设定长度相匹配的字符串。
/^((?:[a-z\d]+(?:\.(?!$))?)+){6}$/i
的作用是它现在接受不少于6个字符,但它也乐意接受任何更长的时间......
我显然错过了什么,但我不知道它是什么。
有人可以帮忙吗?
答案 0 :(得分:4)
这应该有效:
/^(?!.*?\.\.)[a-z\d][a-z\d.]{4}[a-z\d]$/i
说明:
^ // matches the beginning of the string
(?!.*?\.\.) // negative lookahead, only matches if there are no
// consecutive periods (.)
[a-z\d] // matches a-z and any digit
[a-z\d.]{4} // matches 4 consecutive characters or digits or periods
[a-z\d] // matches a-z and any digit
$ // matches the end of the string
答案 1 :(得分:2)
另一种方法:
/(?=.{6}$)^[a-z\d]+(?:\.[a-z\d]+)*$/i
说明:
(?=.{6}$) this lookahead impose the number of characters before
the end of the string
^[a-z\d]+ 1 or more alphanumeric characters at the beginning
of the string
(?:\.[a-z\d]+)* 0 or more groups containing a dot followed by 1 or
more alphanumerics
$ end of the string