在JavaScript中使用正则表达式的意外结果

时间:2018-01-20 15:43:11

标签: javascript regex

这是我的字符串。

 var re = "i have a string";

这是我的表达

var str = re.replace(/(^[a-z])/g, function(x){return x.toUpperCase();});

我希望它会将任何单词的第一个字符变为大写字母。但上面的替换只返回第一个大写的字符。但我最后添加了/ g。

我的问题在哪里?

2 个答案:

答案 0 :(得分:3)

您可以使用var标记表达式的边界。



\b




  

元字符\ b是一个像插入符和美元符号的锚。它匹配一个名为"字边界的位置"。这个匹配是零长度。

     

有三种不同的职位符合词边界:

     
      
  1. 在字符串中的第一个字符之前,如果第一个字符是单词字符。
  2.   
  3. 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
  4.   
  5. 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
  6.   

答案 1 :(得分:0)

Vlaz的评论对我来说是正确的答案 - 在你的模式的开头加上一个“^”,你保证你只会找到第一个角色 - 其他人将不匹配模式尽管有“/ g”,因为它们不会立即跟随线的开始。