当前位置:  开发笔记 > 编程语言 > 正文

RegEx允许在开始时使用字母数字,然后使用连字符

如何解决《RegEx允许在开始时使用字母数字,然后使用连字符》经验,为你挑选了4个好方法。

我有一个要求,在文本字段中第一个字符应该是字母数字,然后我可以在JavaScript中允许连字符.最后也不应该允许连字符



1> wvanbergen..:

如果您不想在彼此之后匹配多个破折号:

^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$

这将匹配:a,a-a,aaa-a,aaa-a-aaa-a-aaa-a,等
但不:-,-a,a-,a--a,a-a-a-,a-a--a,等.



2> Jon Skeet..:
^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$



3> Tomalak..:

这是POSIX + look-akead变体:

^[[:alnum:]](?:[[:alnum:]-](?!-$))*$

这也只允许一个角色作为匹配.但它不是那么可读.;-)

请注意,这[[:alnum:]]是一个速记预定义的字符类,相当于[a-zA-Z0-9]更高效,但可以互换.并非每个正则表达式都知道这些POSIX类,如果您愿意,可以使用传统形式.

这是一个不允许多个连续连字符的连字符,它更短:

^(?:[[:alnum:]]+(?:-(?!$))?)+$

它是非POSIX形式:

^(?:[a-zA-Z0-9]+(?:-(?!$))?)+$



4> Gumbo..:

我建议:

^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$

这也匹配长度为1的字符串.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有