2011-10-25 36 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