JavaScript驼峰转下划线需分两步:先匹配“小写/数字→大写”插入下划线,再处理“连续大写→大写+小写”边界,最后统一小写;如XMLHttpRequest→xml_http_request。

JavaScript 中将驼峰命名(如 userName、XMLHttpRequest)转为下划线命名(如 user_name、xml_http_request),关键在于正确识别大小写字母边界,尤其要处理连续大写字母(如 XML)的特殊情况。
基础规则:小写后跟大写 → 插入下划线
最常见的情况是小写字母紧接大写字母(如 userName),此时在大写字母前加下划线并转为小写:
-
userName→user_name -
myApiUrl→my_api_url
进阶处理:连续大写字母需拆分(如 XML、HTTP)
像 XMLHttpRequest 这类缩写词不能简单变成 x_m_l_http_request,而应识别连续大写字母块,只在“大写块末尾→小写字母”或“小写字母→大写块开头”处插入下划线:
-
XMLHttpRequest→xml_http_request -
parseHTMLString→parse_html_string -
getUTF8Value→get_utf8_value
推荐实现方式:正则替换 + toLowerCase
一行简洁可靠的写法:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
function camelToUnderline(str) {
return str
.replace(/([a-z\d])([A-Z])/g, '$1_$2') // 小写/数字 → 大写:插入下划线
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') // 连续大写 → 大写+小写:在中间插入下划线
.toLowerCase();
}
示例调用:
-
camelToUnderline('userName')→"user_name" -
camelToUnderline('XMLHttpRequest')→"xml_http_request" -
camelToUnderline('iOSVersion')→"ios_version"
注意边界情况
实际使用中需考虑这些细节:
- 首字母大写(如
UserName)会转成user_name,符合常规预期 - 纯大写字符串(如
API)会变成api,若需保留全大写可额外判断,但下划线命名惯例通常全小写 - 含数字时(如
user2Name)仍能正常工作:"user2_name" - 空字符串或无大写字母的字符串(如
name)保持不变

















