正则表达式长度为X个字符,由字母数字组成,但不包括_和句号,但不包括开头和结尾



如主题所示,我需要一个长度为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

相关内容

  • 没有找到相关文章

最新更新