我想将字符串中每个单词的第一个字符设为大写。 我指的是这篇文章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()方法解决此问题。但我想用替换的正则表达式来做。 :)
答案 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
。