首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式只允许字母,数字,点,下划线,破折号。至少5个字符

问正则表达式只允许字母,数字,点,下划线,破折号。至少5个字符
EN

Stack Overflow用户
提问于 2016-03-16 23:54:54
回答 2查看 4.5K关注 0票数 1

如何使正则表达式符合规则

  1. 只允许字母(大写或小写),数字,点,下划线,破折号
  2. 至少5个字符
  3. 不能包含通用术语或扩展(例如:.com、.net)。.php,.mustache,.html,.js,.jpeg,.jpg,.png,.tiff . 例如: username.com x username.comme o

这是我的,如果包含点,下划线,破折号,

以及如何排除扩展字符串。

^[a-zA-Z0-9_.-]*\w{5,}$

https://regex101.com/r/pT0iD8/1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 00:03:00

会是这样的:

代码语言:javascript
复制
^([\w.-](?!\.(com|net|html?|js|jpe?g|png)$)){5,}$

解释:

代码语言:javascript
复制
^              # from start            
([\w.-]        # \w is equal to [a-zA-Z0-9_]
    (?!\.          # in front can NOT be a dot followed by
        (com           # com
        |net           # OR net
        |html?         # OR htm or html     # ? means optional match
        |js            # OR js
        |jpe?g         # OR jpg or jpeg
        |png           # OR png
        )$             # block only if it is at the end
    )              # end of the negative lookahead
){5,}          # match at least 5 characters in above conditions
$              # till the end

希望能帮上忙。

票数 10
EN

Stack Overflow用户

发布于 2016-03-17 00:06:00

虽然你可以(可能)把它变成一个regexp,但是它的表现会非常糟糕.如果使用一个可以使用两个正则表达式的函数,情况会好得多。

第二部分可能会更好地进行数组检查,将所有的值分割成一个数组。

代码语言:javascript
复制
function isValid(str) {
  return (/^([\w\d_\.]{5,})$/i).test(str) 
    && !(/\.(dll|com|net|exe|php|html|js|jpeg|jpg|png|tiff|gif)$/i).test(str);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36049205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档