正则表达式以角度替换字替换过滤器

时间:2015-12-16 06:35:58

标签: javascript jquery angularjs regex angular-filters

我使用下面的过滤器将字符串转换为驼峰大小写。除此之外,我不希望将带有字母数字字符的字符串转换为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

};
});

第二个条件似乎不起作用。任何人都可以帮忙。

1 个答案:

答案 0 :(得分:1)

您的正则表达式不正确。

\w匹配字母数字字符,因此您的第一个正则表达式不应使用该规则。您可能想要:/[A-Za-z]+/

你的第二个正则表达式有两个错误。首先,它只匹配一个字符。其次它总是与第一个相同的东西匹配。

你想要一个只匹配有数字的单词的正则表达式。所以你需要这样的东西:/[A-Za-z]+[0-9][A-Za-z]*/。这将匹配一个或多个字母,后跟至少一个数字,后跟零个或多个字母或数字。如果这些单词始终只以数字结尾,那么您可以将其简化为/[A-Za-z]+[0-9]+/

相关问题