Для этого необходимо иметь два (или более) отдельных выражения (используя оператор |
).
Так что это будет примерно так:
/\[\s*("[^"]*"|[0-9]+)(\s*,\s*("[^"]*"|[0-9]+))*\s*\]/
(Вы также можете использовать ^
в начале и $
в конце, чтобы убедиться, что ничего больше не появляется перед / после массива: /^...snip...$/
, чтобы соответствовать строке от начала до конца.)
Если вам нужны числа с плавающей запятой с показателями степени, добавьте точку и символ 'e': [0-9.eE]+
(именно поэтому я не использовал \d+
, потому что в этом случае разрешены только цифры).Чтобы убедиться, что число допустимо, оно намного сложнее, очевидно (знак, экспонента со знаком / без знака, цифры только до или после десятичной запятой ...)
Вы также можете поддерживать строки в одинарных кавычках.Это тоже отдельное выражение: '[^']*'
.
Возможно, вы также захотите разрешить пробелы до и после скобок (начало: /^\s*\[...
и конец: ...\]\s*$/
).
НаконецЕсли вы хотите действительно поддерживать строки JavaScript, вам нужно добавить поддержку обратной косой черты.Примерно так: ("([^"]|\\.)*")
.
Примечание
Ваше выражение .+
будет соответствовать "
и ,
тоже, без ^
и $
массив как следует соответствует вашему выражению просто отлично:
This Array ["test", 123, true, "this"] Here