javascript - 这个正则表达式如何实现从大写到小写的交换,反之亦然?

标签 javascript

JavaScript:输入字符串并将大写字母转换为小写字母,反之亦然

swapcase = function swapcase(str) { 
  return str.replace(/([a-z]+)|([A-Z]+)/g,
    function(match, chr) { 
      return chr ? match.toUpperCase() : match.toLowerCase(); 
  });
}
console.log(swapcase('AaBbc'))

最佳答案

`/(a-z)+|(A-Z)+/`
  • (a-z)+ - 匹配任意小写字符一次或多次。 (捕获组 1)
  • | - 与逻辑 OR 相同的交替
  • (A-Z)+ - 匹配任何大写字符一次或多次。 (捕获组 2)

JS replace方法具有以下结构

str.replace(regexp|substr, newSubstr|function)

这里这个函数需要 parameters(match, group1,group2..., offset,string)

const swapcase = function swapcase(str) {
  return str.replace(/([a-z]+)|([A-Z]+)/g, function(match, chr) { 
      return chr ? match.toUpperCase() : match.toLowerCase(); });
} 

console.log(swapcase('AaBbc'))

因此,在您的代码中,chr 是第 1 组。它仅匹配小写字符。在您的返回中,您的交换案例基于 chr

的值

关于javascript - 这个正则表达式如何实现从大写到小写的交换,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54613799/

相关文章:

javascript - 如何更改没有 2 项的菜单项 href?

javascript - 使用 javascript 或 jQuery,检测用户是否拒绝浏览器定位计算机的请求

javascript - 尝试注册 RCTBridgeModule 类 RCTFileReaderModule

javascript - 如何使用javascript对数组的一部分进行排序?

c# - 关闭弹出窗口 MVC Controller

javascript - 提取表单数据并使用 node.js 发送到我的数据库

javascript - 在控制台中列出正在运行的 Controller 实例及其 this 变量?

javascript - 为什么 UseBR 在highlight.js 中不起作用

javascript - 如何隐藏软键盘并保持输入焦点

javascript - Expect(object).toEqual(object) 抛出错误对象读取没有方法调用