2011-10-25 37 views
2

我想改变也低于A-Z 0-9的正则表达式,只有正则表达式的字符数限制

var nameRegex = /^[a-zA-Z]+(([\'\,\.\-][a-zA-Z])?[a-zA-Z]*)*$/; 

2,4强调这是什么意思?这是否意味着检查顶级域名是一分钟。 2到4个字符。最大?

var emailRegex = /^[\w-\.][email protected]([\w-]+\.)+[\w-]{2,4}$/; 

我该如何添加一个所需的250个字符,最终是否会{250,250}呢?

// original 
     var messageRegex = 
new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim); 

// would this work? 
     var messageRegex = 
new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim){250,250}$/; 
+0

你想要250个字吗? – fncomp

+0

@Josh 250到500转......应该是250,500? – acctman

+0

发布了一个可能的答案。请让我知道如果这是你问的:) – fncomp

回答

3

如果我正确地得到您的问题,那么这些应该是你在找什么:

  1. 匹配一组字符A-Z中,0-9和_。

    // Would match any input with A-z 0-9 or _ in any position, given at least one char. 
    var nameRegex = /^[A-Za-z\d_]+$/; 
    
  2. 你是对的{2,4}。它指定[\w-]应该 匹配两个,三个或四个字符。

  3. 您的消息RegExp将强制输入长度恰好为250个字符以获得匹配。如果您想要多于250个而少于500个,请附加{251,500}

  4. 最后注意,RegExp文字看起来像/someRegex/ig。如果您使用的是文字,则没有理由在构造函数中进行换行(即new RegExp)。

  5. 最后一个注意事项,我个人在我的RegExp中避免了*,因为如果明星进入结束斜线并且有人试图注释表达式,这可能会导致有趣的错误。

    /* Comment out some code 
    var myRe = /[a-z]*/i; // The comment stops before the i. 
    */ // This line breaks your code. 
    

编辑:更新点三个基于对OP反馈。

+4

不要使用'[A-z]'来匹配大写和小写字母。它可以工作,但它也匹配字符'[',']','^','_',反斜杠和反码,它们的代码恰好位于'Z'和'a'之间。改用'[A-Za-z]'或者'/ i'修饰符。 –

+0

@Alan好知道,编辑。 – fncomp