数组中的数组的正则表达式

时间:2015-04-22 18:36:24

标签: javascript arrays regex

我有一个数组数组(调用外部数组arr1),其中包含多个值,这些值都是内部数组。我试图验证内部数组的元素具有以下格式,并以arr1 [1]为例(arr1的其他元素,即arr1 [2],arr1 [3],arr1 [4]等。具有相同的格式

arr1[1] = ['item1', 'item2', 'item3', 'item4', 'item5']:

item 1 - "abcdef" (variable number of letters)
item 2 - "abcdef" (variable number of letters)
item 3 - "abcdef" (variable number of letters) OR "abcdef asdf" (variable number of letters separated by one whitespace character)    
item 4 - "12345678" (eight digits)
item 5 - "123 456 7890" (telephone number with 3 digits followed by 3 digits followed by 4 digits with two whitespace characters as shown)

这是我到目前为止的一个片段(不确定第二行是如何工作的 - 从不同的SO线程获得它):

function f(s) {
  var s2 = (""+s).replace(/\D/g, '');
  var m = s2.match(/^(\d{3})(\d{3})(\d{4})$/);
}

提前感谢您的任何帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

item 1 - \w+ (variable number of letters)
item 2 - \w+ (variable number of letters)
item 3 - \w+(?:\s\w+)? (variable number of letters) OR 
                         (variable number of letters 
                          separated by one whitespace character)    
item 4 - \d{8} (eight digits)
item 5 - (?:\d{3}\s){2}\d{4} (telephone number with 3 digits 
                              followed by 3 digits followed by 4 
                              digits with two whitespace characters as shown)

编辑:您可以使用^\w+?,\s\w+?,\s\w+(?:\s\w+)?,\s\d{8},\s(?:\d{3}\s){2}\d{4}$直接验证字符串。

例如:

function validateStr(str) {
  return (/^\[\s'\w+?',\s'\w+?',\s'\w+(?:\s\w+)?',\s'\d{8}',\s'(?:\d{3}\s){2}\d{4}'\s\]$/).test(str);
}

答案 1 :(得分:0)

你应该有类似的东西 -

function checkTelephone(s) {
      return (/^(\d{3})\s(\d{3})\s(\d{4})$/).test(s);
}

如果字符串与电话正则表达式不匹配,则此函数返回false。