我使用下面的过滤器将字符串转换为驼峰大小写。除此之外,我不希望将带有字母数字字符的字符串转换为camelcase。
例如:
如果输入是"你好我是INDIA1237"
输出必须是"你好我是INDIA1237"
我的过滤器如下:
angular.module('app')
.filter('titleCase', function() {
return function(input) {
input = input || '';
input = input.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); //convert to camelcase
return input.replace(/[A-Za-z0-9 ]/, function(txt){return txt.toUpperCase();}); //retain alphanumeric string in uppercase
};
});
第二个条件似乎不起作用。任何人都可以帮忙。
答案 0 :(得分:1)
您的正则表达式不正确。
\w
匹配字母数字字符,因此您的第一个正则表达式不应使用该规则。您可能想要:/[A-Za-z]+/
你的第二个正则表达式有两个错误。首先,它只匹配一个字符。其次它总是与第一个相同的东西匹配。
你想要一个只匹配有数字的单词的正则表达式。所以你需要这样的东西:/[A-Za-z]+[0-9][A-Za-z]*/
。这将匹配一个或多个字母,后跟至少一个数字,后跟零个或多个字母或数字。如果这些单词始终只以数字结尾,那么您可以将其简化为/[A-Za-z]+[0-9]+/
。