2011-08-04 90 views
2

我有一個字符串,它是格式ABC1234567測試字符串或全部整數

var value = "ABC1234567" 
var first3Letters = value.substring(0,3); // ABC 
var next7Letters = value.substring(3,7); //1234567` 

現在我想驗證是否可變first3Letters只包含字母和可變next7letters只包含整數。

我該怎麼做?

回答

3

這裏有一種方法:

if (/^[a-z]+$/i.test (first3Letters)) { 
    // It's good. 
} 

if (/^\d+$/.test (next7Letters)) { 
    // It's good. 
} 

See it in action at jsFiddle.


正則表達式解釋說:

  1. ^指定字符串的開頭。
  2. &指定字符串的結尾。
  3. [a-z]是任何單詞字符(A,B,C等,但不包括數字或下劃線 - 哪一個\w將允許)。
  4. \d是任意數字字符(0,1,2等)
  5. +表示以前的一個或多個。
  6. 末尾的ii.test)告訴JS運行不區分大小寫的搜索。

所以正則表達式實質上是說:「從頭到尾,除了一個或多個(單詞或數字)字符外,什麼都沒有。」還有:Regular expressions tutorial

+0

由於返回相同布洛克.​​.它的工作..一個小的忙,你可以解釋這些正則表達式 – JAB

+0

請參閱更新的答案對正則表達式的解釋。 –

+0

我覺得'\ w'中的第一個正則表達式會匹配數字以及字母 – ipr101

0
var value = "ABC1234567" 

alert("Matches: "+ value.test(/^[A-Za-z]{3}[0-9]{7}$/)); 
+0

Excellent Petar ... – JAB

+0

'test()'的語法是錯誤的;該代碼將引發異常。 '\ w'也允許數字。 IE,'「6661234567」'和'「___ 1234567」'都會通過該正則表達式。 –

+0

我修正\ w和\ d。 test()沒有錯,儘管在jsfiddle.net中嘗試它 –

0

對於第二個你可以使用isNaN方法,它會採取一些字符串表示,返回如預期,即var x = 2; var y = "2",並且無論從isNaN()

0
var test = 'AAAA1122'; 
    chr = test.split(/\d/i); 
    integer = test.split(/\D/i); 

    alert("+++++++chr+++++"+chr[0]+"++++++++++++"); 
    alert("++++++int++++++"+integer[0]+"++++++++++++");