2016-04-07 4 views
0

Я пытаюсь сопоставить строку для двух случаев одним регулярным выражением в JavaScript. Строка может находиться в одном из заданных форматовСоответствие строки с регулярным выражением возвращает null

//Singapore 
//Singapore (country) 

я попытался следующее регулярное выражение, чтобы соответствовать струнам

"singapore".match(/(.*) (?:\((.*)\))?/) 
//null 
"singapore (country)".match(/(.*) (?:\((.*)\))?/) 
//["singapore (country)", "singapore", "country"] 

Я хочу как результат возвращает массив как 2-й случай, когда 3-я запись в массиве может быть неопределенной/пустой или вообще отсутствовать, но результат не должен быть нулевым.

Можно ли это сделать одним регулярным выражением. Если да, то, что ошибка в приведенном выше выражении

+0

@JamesThorpe да может содержать пространство –

ответ

4

Вы должны поместить пространство в необязательной группе, потому что это не здесь, в случае только "singapore": /^([^\(]*)(?: \(([^\)]*)\))?$/

+0

Спасибо, что сработало. –

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