2011-08-04 48 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]+"++++++++++++");