如主题所示,我需要一个长度为X个字符的JavaScript正则表达式,它接受字母数字字符,但不接受下划线字符,还接受句号,但不接受开头或结尾。句点也不能连续
我已经能够几乎到达我想要在Stack Overflow上搜索和阅读其他人的问题和答案的地方(例如这里)。
然而,在我的例子中,我需要一个长度恰好为X个字符的字符串(比如6个),可以包含字母和数字(不区分大小写),还可以包括句号。
所述句点不能连续,也不能开始或结束字符串。
Jd.1.4
有效,但Jdf1.4f
无效(7个字符)。
/^(?:[a-zd]+(?:.(?!$))?)+$/i
是我能够使用别人的例子构造的,但是我不能让它只接受与设置长度匹配的字符串。
/^((?:[a-zd]+(?:.(?!$))?)+){6}$/i
的工作原理是,它现在接受不少于6个字符,但它也很高兴接受任何超过…
我显然错过了什么,但我不知道它是什么。
有人能帮忙吗?
应该可以:
/^(?!.*?..)[a-zd][a-zd.]{4}[a-zd]$/i
解释:
^ // matches the beginning of the string
(?!.*?..) // negative lookahead, only matches if there are no
// consecutive periods (.)
[a-zd] // matches a-z and any digit
[a-zd.]{4} // matches 4 consecutive characters or digits or periods
[a-zd] // matches a-z and any digit
$ // matches the end of the string
另一种方法:
/(?=.{6}$)^[a-zd]+(?:.[a-zd]+)*$/i
解释:
(?=.{6}$) this lookahead impose the number of characters before
the end of the string
^[a-zd]+ 1 or more alphanumeric characters at the beginning
of the string
(?:.[a-zd]+)* 0 or more groups containing a dot followed by 1 or
more alphanumerics
$ end of the string