首页 > 解决方案 > 括号内第一个单词的首字母大写

问题描述

我想将括号内每个字符串的第一个字母大写...

如果我们有这个字符串:

const text = 'This [forest or jungle] is [really] beautiful';

期望的结果是'This [Forest or jungle] is [Really] beautiful'

至今:

我有大写功能:

function capitalize(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
} 

在这里,我们有这个正则表达式代码来选择括号内的字符串:

/(?<=\[)(.*?)(?=\])/g

请帮忙

标签: javascriptregex

解决方案


您可以使用

text = text.replace(/(?<=\[)[a-z](?=[^\][]*])/g, (x) => x.toLocaleUpperCase())
// OR
text = text.replace(/(?<=\[)\p{Ll}(?=[^\][]*\])/gu, (x) => x.toLocaleUpperCase())

请参阅正则表达式演示/正则表达式演示 #2详情

  • (?<=\[)- 与前面紧跟[字符的位置匹配的正向后视
  • [a-z]- 一个小写的 ASCII 字母
  • \p{Ll}- 任何 Unicode 小写字母
  • (?=[^\][]*\])- 一个积极的前瞻,它需要任何零个或多个字符,而不是[],然后是]当前位置的右侧。

请参阅 JavaScript 演示:

const text = 'This [forest or jungle] is [really] beautiful';
console.log( text.replace(/(?<=\[)[a-z](?=[^\][]*])/g, (x) => x.toLocaleUpperCase()) )


推荐阅读