将每个单词的首字母大写,\ b\w也适用于我

pat*_*tko 5 javascript regex

需要将句子中每个单词的第一个字母大写,但是我的正则表达式也是我在'm'中的大写字母.

完整的表达是这样的:

/(?:^\w|[A-Z]|\b\w)/g
Run Code Online (Sandbox Code Playgroud)

这里的问题(我认为)是\b\w抓住单词边界后的第一个字母.我假设单引号表示一个字边界也因此在资本mI'm进入I'M.

任何人都可以帮我改变表达式,在单引号后排除'm'吗?

提前致谢.

小智 2

在语言中间找到真正的单词中断可能
比使用正则表达式单词边界更复杂一些。

 ( \s* [\W_]* )           # (1), Not letters/numbers,
 ( [^\W_] )               # (2), Followed by letter/number
 (                        # (3 start)
      (?:                      # -----------
           \w                       # Letter/number or _
        |                         # or,
           [[:punct:]_-]            # Punctuation
           (?= [\w[:punct:]-] )     #  if followed by punctuation/letter/number or '-'
        |                         #or,
           [?.!]                    # (Add) Special word ending punctuation
      )*                       # ----------- 0 to many times
 )                        # (3 end)
Run Code Online (Sandbox Code Playgroud)

 ( \s* [\W_]* )           # (1), Not letters/numbers,
 ( [^\W_] )               # (2), Followed by letter/number
 (                        # (3 start)
      (?:                      # -----------
           \w                       # Letter/number or _
        |                         # or,
           [[:punct:]_-]            # Punctuation
           (?= [\w[:punct:]-] )     #  if followed by punctuation/letter/number or '-'
        |                         #or,
           [?.!]                    # (Add) Special word ending punctuation
      )*                       # ----------- 0 to many times
 )                        # (3 end)
Run Code Online (Sandbox Code Playgroud)