Javascript 正则表达式camelize字符串中的特定文本

Javascript 正则表达式camelize字符串中的特定文本,javascript,angularjs,regex,Javascript,Angularjs,Regex,我有下一个字符串: $scope.string = "User {{User Firstname}} </p><p>System {{Reported System Name}} </p><p>Desc {{Description}}</p><ol></ol>" 谁能解释一下我做错了什么 您可以分两步完成,获取内括号内容,然后将其骆驼化 (注意-如果仅 (要删除空白) 解释 ^ \W* (

我有下一个字符串:

  $scope.string = "User {{User Firstname}} </p><p>System {{Reported System Name}} </p><p>Desc {{Description}}</p><ol></ol>"
谁能解释一下我做错了什么


您可以分两步完成,获取内括号内容,然后将其骆驼化

(注意-如果仅
(要删除空白)

解释

    ^ \W* 
    ( \w )                        # (1), First letter of first word
 |                          # or,
    \b 
    ( \w )                        # (2), First letter of other words
 |                          # or,  
    ( \W )                        # (3), Non-words, whitespace, etc...
函数camelize(str)
{
返回str.replace(/^\W*(\W)|\b(\W)|(\W)/g,
功能(匹配、g1、g2、g3){
if(g1!=null)//第一个单词,第一个字母
返回g1.toLowerCase();
其他的
if(g2!=null)//第二个单词的第一个字母
返回g2.toUpperCase();
返回“”;//所有非单词字母(wsp)
}
)
}
函数camelizeBrackets(str)
{
返回str.replace(/\{([\S\S]*?)\}}/g,
功能(匹配,g1){
返回'{'+camelize(g1)+'}}';
}
);
} 
log(camelizeBrackets(“{{EquipmentClass name}}”);
log(camelizeBrackets(“{{Equipment className}}”);
log(camelizeBrackets(“{{equipment class name}}”);
log(camelizeBrackets(“{{Equipment Class Name}}”);

log(camelizeBrackets(“User{{User Firstname}

System{Reported System Name}}

Description}

”)要解释你做错了什么,需要解释你想做什么,或者用正则表达式解释你想做什么。这部分正则表达式
(?:^\w|[A-Z]|\b\w|\s+)
无法解释任何东西,因为它无法识别。那么,有更好的解释吗?@sln我更新了我的问题,如果你需要更多的解释,请告诉我。如果你试图删除空白,降低第一个单词的第一个字母,增加第二个,第三个,。。单词字母?第一个字母后面的字母怎么办?String.match返回一个匹配数组,但将该数组的元素设置为新元素不会影响原始字符串。您需要执行$scope.string=$scope.string.replace(一些正则表达式,一些替换函数);看见
if ($scope.string.match(/\{\{(.*?)\}\}/g)){
       for (var i = 0; i < $scope.string.match(/\{\{(.*?)\}\}/g).length; i ++){
             $scope.string.match(/\{\{(.*?)\}\}/g)[i] = camelizeBrackets($scope.string.match(/\{\{(.*?)\}\}/g)[i])
        }
  }
 function camelizeBrackets(str) {
     return str.replace(/\{\{(?:^\w|[A-Z]|\b\w|\s+)\}\}/g, function(match, index) {
        if (+match === 0) return "";
          return index === 0 ? match.toLowerCase() : match.toUpperCase();
       });
   }
    ^ \W* 
    ( \w )                        # (1), First letter of first word
 |                          # or,
    \b 
    ( \w )                        # (2), First letter of other words
 |                          # or,  
    ( \W )                        # (3), Non-words, whitespace, etc...