До JavaScript 1.5: ^[a-zA-Z_$][0-9a-zA-Z_$]*$
На английском языке: Он должен начинаться со знака доллара, подчеркивания или одной из букв алфавита из 26 символов, прописных или строчных. Последующие символы (если они есть) могут быть одним из них или десятичной цифрой.
JavaScript 1.5 и более поздние версии *: ^[\p{L}\p{Nl}$_][\p{L}\p{Nl}$\p{Mn}\p{Mc}\p{Nd}\p{Pc}]*$
Это сложнее выразить на английском языке, но концептуально оно похоже на более старый синтаксис с добавлением, что буквы и цифры могут быть из любого языка. После первого символа также допускаются дополнительные символы подчеркивания (вместе называемые «соединителями») и дополнительные знаки объединения символов («модификаторы»). (Другие символы валюты не включены в этот расширенный набор.)
JavaScript 1.5 и более поздние версии также допускают escape-последовательности Unicode, при условии, что результатом является символ, который будет разрешен в приведенном выше регулярном выражении.
Идентификаторы также не должны быть текущим зарезервированным словом или словом, которое рассматривается для будущего использования.
Практически нет ограничений на длину идентификатора. (Браузеры различаются, но у вас будет безопасно 1000 символов и, возможно, на несколько порядков больше.)
Ссылки на категории персонажей:
- Буквы: Лу , Ll , Lt , Lm , Lo , Nl
(объединено в приведенном выше регулярном выражении как «L»)
- Комбинированные метки («модификаторы»): Mn , Mc
- Цифры: Nd
- Разъемы: ПК
* n.b. Это регулярное выражение Perl предназначено только для описания синтаксиса - оно не будет работать в JavaScript, который (пока) не включает поддержку свойств Unicode. (Есть некоторые сторонние пакеты, которые утверждают, что добавляют такую поддержку.)