Цитировать литералы регулярных выражений в JavaScript? Почему бы и нет?

В этом ответе на вопрос и во многих других местах я вижу строки без кавычек в javascript.

Например:

var re = /\[media id="?(\d+)"?\]/gi;

Почему это не должно быть:

var re = '/\[media id="?(\d+)"?\]/gi';

Это какая-то особая обработка регулярных выражений, или любая строка может быть объявлена ​​таким образом?

4 ответа

Решение

Это какая-то особая обработка регулярных выражений?

Да, регулярные выражения получают особую обработку. Как указывает MDN, существует встроенный тип регулярных выражений JavaScript с собственным синтаксисом для литералов.

или любая строка может быть объявлена ​​таким образом?

Нет. Поскольку регулярные выражения являются объектами и не являются строками, если вы попытаетесь написать строку с литералом регулярного выражения, вы получите объект регулярного выражения, а не строку.

var re = /\[media id="?(\d+)"?\]/gi;

является литералом регулярного выражения, а не строкой.

Это только для регулярных выражений, а не для строк.

Потому что в JavaScript Regex является встроенным типом, а не строковым шаблоном, который передается какому-то парсеру, например, в C# или Java.

Это означает, что когда вы пишете var regex = /pattern/JavaScript автоматически использует этот литерал в качестве шаблона регулярного выражения, делая regex объект RegExp тип.

Смотрите: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

Другие вопросы по тегам