You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现除单双引号内文本外其余内容转小写

需求:实现引号外内容转小写,引号内保留原大小写

现有基础代码(全内容转小写)

下面是一段能把文本框内所有内容转为小写的简单代码:

JavaScript 逻辑

function reformat() {
    // 将textarea的值赋值给变量
    var str = my_text.value;
            
    // 转为小写
    str = str.toLowerCase();

    // 将新值设置回textarea
    my_text.value = str;
}

HTML 页面结构

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<div class="container-fluid" style="padding-top:10px;">
    <textarea id="my_text" name="my_text" style="width:400px; height:150px;" class="form-control">
select reject_lookup_code "Look Up Code"
     , count(*)
  from ap_interface_rejections
 WHERE reject_lookup_code NOT IN ('THIS','that')
  group by reject_lookup_code
    </textarea>

<hr />

<button onclick="reformat()">切换</button>    
</div> <!-- /container-fluid -->

已知的Notepad++实现方式

之前在Notepad++中,可用正则实现仅单引号内内容保留大小写,其余转小写的效果:

  • 查找规则:'[^']*'|([A-Z])
  • 替换规则:(?1\L$1:$0)

需求升级:JavaScript实现双/单引号内内容保留大小写

现在需要用JavaScript实现更全面的效果:除双引号(" ")和单引号(' ')内的文本保持原有大小写不变,其余所有内容转为小写。

输入示例

select reject_lookup_code "Look Up Code"
     , count(*)
  from ap_interface_rejections
 WHERE reject_lookup_code NOT IN ('THIS','that')
  group by reject_lookup_code

期望输出

select reject_lookup_code "Look Up Code"
     , count(*)
  from ap_interface_rejections
 where reject_lookup_code not in ('THIS','that')
  group by reject_lookup_code

JavaScript 实现方案

可以通过正则匹配结合替换函数实现,代码如下:

function reformat() {
    var str = my_text.value;
    // 匹配双引号内容、单引号内容、引号外内容
    str = str.replace(/"([^"]*)"|'([^']*)'|([^'"]+)/g, function(match, doubleQuoteContent, singleQuoteContent, outsideContent) {
        // 双引号内内容直接返回
        if (doubleQuoteContent !== undefined) {
            return `"${doubleQuoteContent}"`;
        }
        // 单引号内内容直接返回
        if (singleQuoteContent !== undefined) {
            return `'${singleQuoteContent}'`;
        }
        // 引号外内容转小写后返回
        return outsideContent.toLowerCase();
    });
    my_text.value = str;
}

实现说明

  • 正则/"([^"]*)"|'([^']*)'|([^'"]+)/g会分三类匹配内容:双引号包裹的文本、单引号包裹的文本、不在任何引号内的文本。
  • 替换函数根据捕获到的内容类型处理:引号内的文本直接保留原样,引号外的文本转为小写后返回。

内容的提问来源于stack exchange,提问作者4532066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:25:12