正则表达式只允许字母,数字,点,下划线,短划线。至少5个字符

时间:2016-03-16 23:54:54

标签: javascript regex

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

  1. 仅允许字母(大写或小写),数字,点,下划线,破折号
  2. 至少5个字符
  3. 不能包含通用术语或扩展名(例如:.com,.net)。 .php,.mustache,.html,.js,.jpeg,.jpg,.png,.tiff,..
    例如
    username.com x
    username.comme o
  4. 这是我的,如果包含点,下划线,短划线,则无法匹配 以及如何排除扩展字符串
    ^[a-zA-Z0-9_.-]*\w{5,}$

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

2 个答案:

答案 0 :(得分:6)

这将是这样的:

^([\w.-](?!\.(com|net|html?|js|jpe?g|png)$)){5,}$

解释

^              # 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

希望它有所帮助。

答案 1 :(得分:1)

虽然你可以(可能)将它变成一个正则表达式,但它会严重执行 ...你最好使用一个函数,可以使用两个 正则表达式。

使用数组检查可以更好地关闭第二部分,将所有值拆分为数组。

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);
}