2015-07-19 2 views
0

Следующий код работает, но мне интересно, если есть лучший способ достичь того же результата:Regex test, есть ли лучший способ написать это?

var regex = /define\((\s+)?['|"](PRIVATE_KEY)['|"],(\s+)?['|"](.*)['|"](\s+)?\)/i; 

Тест:

regex.test("define('PRIVATE_KEY', 'MYSECRETKEY');"); 


https://regex101.com/r/pW0qS0/4

+1

Что именно вы подразумеваете под «лучше»? – Gary

+0

более быстрый и оптимизированный –

ответ

1

Во-первых, я думаю, вы не 't нужно использовать pip в классе символов (если вы хотите совместить только одну цитату и двойную кавычку), а вместо (\s+)? вы можете использовать \s*:

/define\(\s*['"](PRIVATE_KEY)['"],\s*['"](.*)['"]\s*\)/i 

См демонстрационная https://regex101.com/r/dL1vF4/3

+0

Он работает, спасибо –

2

только фигурные скобки вокруг MYSECRETKEY части, потому что это часть, которую вы хотите захватить.

var regex = /^define\(\s*['"]PRIVATE_KEY['"]\s*,\s*['"](.*?)['"]\s*\);$/i; 
+0

Как всегда, добавление таких вещей, как \ s *, и начало и конец якоря^и $ зависит от того, насколько вы уверены в том, как будет форматироваться вход. – m69

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