2015-04-22 2 views
1

У меня есть массив массивов (вызов внешнего массива arr1) с многочисленными значениями, которые являются внутренними массивами. Я пытаюсь проверить, что внутренние массивы имеют следующий формат для своих элементов с arr1 [1], представленный в качестве примера (другие элементы arr1, то есть arr1 [2], arr1 [3], arr1 [4] и т. Д. одного и того же форматаRegex для массивов в массиве

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})$/); 
} 

заранее спасибо за любую помощь.

+5

Это не совсем понятно, что вы просите. Кроме того, ваши внутренние массивы - '[" item1, item2, item3, item4, item5 "]' - это массив с 1 элементом в нем (длинная строка), это то, что вы на самом деле получили, или это что-то другой? –

+1

Пожалуйста, отметьте ответ как правильный, если он правильный, чтобы другие могли получить помощь из него. – Pratik

+0

Джеймс - вы правильно истолковали его. Каждый внутренний массив имеет длинную строку с компонентами, разделенными запятыми. Я хочу использовать регулярное выражение для компонентов, разделенных запятыми. – djfkdjfkd39939

ответ

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) 

EDIT: Вы можете использовать ^\w+?,\s\w+?,\s\w+(?:\s\w+)?,\s\d{8},\s(?:\d{3}\s){2}\d{4}$ непосредственно проверить строку.

Ex:

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); 
} 
+0

Это лучший ответ для вас (я не заметил обновления). Объедините его с моим ответом, где у вас есть разные функции для проверки различных регулярных выражений. Перейдите в параметр и проверьте, удовлетворяет ли этот параметр выражению или нет. Это должно сработать для вас. – Pratik

+0

Можете ли вы дать немного больше рекомендаций о том, как реализовать это в этом конкретном случае? комментарии Джеймс Торп выше правильно интерпретировать мой вопрос – djfkdjfkd39939

+0

Смотрите обновленный ответ .. –

0

У вас должно быть что-то типа -

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

Эта функция возвращает false, если строка не соответствует регулярному выражению телефона.

Смежные вопросы