用大小写转换替换javascript

时间:2017-01-31 08:38:16

标签: javascript regex replace

我想将字符串中每个单词的第一个字符设为大写。 我指的是这篇文章Replacement Text Case Conversion

当我使用替换文本运行正则表达式([a-zA-Z])([a-zA-Z] (\ s)时在我的编辑器(崇高文本)中 \ u $ 1 \ l $ 2 ,它可以正常工作。

但是,当我尝试使用如下所示的替换方法在javascript中执行相同操作时,它会给出语法错误,因此会失败。

var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi;
var rep = "\\u$1\\l$2";  // here it is giving error
var result = input.replace(regex,rep);

如何解决这个问题?

我知道可以使用charAt()和toUppercase()方法解决此问题。但我想用替换的正则表达式来做。 :)

1 个答案:

答案 0 :(得分:3)

JS regex引擎不支持替换模式中的低级和大型运算符\u\l。在String#replace

中使用回调

var input = "aZ";
var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi;
var result = input.replace(regex, function($0,$1,$2,$3) {
  return $1.toUpperCase() + $2.toLowerCase(); 
});
console.log(result);

请注意,您可以将模式缩减为/([a-z])([a-z]*\s*)/gi