需要正则表达式允许最多3个特殊字符

时间:2014-10-14 09:25:25

标签: javascript regex

我需要一个满足以下要求的正则表达式。

  1. 应接受长度介于0到50个字符之间的字母数字
  2. 应接受除','
  3. 以外的所有特殊字符
  4. 应接受最少0个,最多3个特殊字符。
  5. 试过这个,但它没有按预期工作。

    ^[a-z\s]{0,50}[.\-']*[a-z\s]{0,50}[.\-']*$
    

    请让我知道,如果有人做对了。

1 个答案:

答案 0 :(得分:4)

好吧,你可以写一些怪异的正则表达式,这是无法读取或维护的,或者只是编写代码来说明规则是什么:

function validate(str) {
    var not_too_long          = str.length <= 50,
        has_no_dots           = !/\./.test(str),
        not_too_many_specials = (str.match(/[^\w\s]/g) || []).length <= 3;

    return not_too_long && has_no_dots && not_too_many_specials;
}

根据您对“特殊字符”的定义进行适当调整。