javascript - 将 toLowerCase 的操作限制为字符串的一部分?

标签 javascript regex

我想将大部分字符串转换为小写,括号内的那些字符除外。将括号外的所有内容转换为小写后,我想删除括号。因此,将 {H}ell{o} World 作为输入应该将 Hello world 作为输出。删除括号很简单,但是有没有办法用正则表达式有选择地使括号外的所有内容小写?如果没有简单的正则表达式解决方案,那么在 javascript 中执行此操作的最简单方法是什么?

最佳答案

你可以试试这个:

var str='{H}ell{o} World';

str = str.replace(/{([^}]*)}|[^{]+/g, function (m,p1) {
    return (p1)? p1 : m.toLowerCase();} );

console.log(str);

模式匹配:

{([^}]*)}  # all that is between curly brackets
           # and put the content in the capture group 1

|          # OR

[^{]+      # anything until the regex engine meet a {
           # since the character class is all characters but {

回调函数有两个参数:

m 完全匹配

p1 第一个捕获组

如果 p1 不为空,则返回 p1 否则整个匹配小写的 m

详细信息:

"{H}"    p1 contains H (first part of the alternation)
         p1 is return as it. Note that since the curly brackets are
         not captured, they are not in the result. -->"H"

"ell"    (second part of the alternation) p1 is empty, the full match 
         is returned in lowercase -->"ell"

"{o}"    (first part) -->"o"

" World" (second part) -->" world"

关于javascript - 将 toLowerCase 的操作限制为字符串的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128397/

相关文章:

mysql - Mariadb V10.3.6 用于 2 个重复词的 REGEXP 表达式

javascript - javascript 正则表达式中 Unicode 字符类的替换

javascript - 输入文本框的正则表达式

javascript - 如何使用自定义的快速验证器?

javascript - morris.js 中 x 轴的问题

javascript - 第一次更改时无法获取 Material-Ui 日期选择器日期

java - 如何验证 DMN camunda 中的输入表达式

java - 忽略正则表达式中括号之间的文本

JavaScript:搜索 URL 参数并删除它,包括值

javascript - 无法使用 Rails-Webpacker React Frontend 从 Rails Active Storage 中搜索视频