javascript - Angular 中的单词替换过滤器的正则表达式问题

标签 javascript jquery angularjs regex angular-filters

我正在使用下面的过滤器将字符串转换为驼峰式大小写。除此之外,我不希望将包含字母数字字符的字符串转换为驼峰式大小写。

例如:

如果输入是“HELLO I AM 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

};
});

第二个条件似乎不起作用。谁能帮忙。

最佳答案

您的正则表达式不正确。

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

您的第二个正则表达式有两处错误。首先,它只匹配一个字符。其次,它将始终匹配第一个所做的相同事情。

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

关于javascript - Angular 中的单词替换过滤器的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305387/

相关文章:

javascript - 使用 JavaScript 在页面正文中显示当前页面的哈希/ anchor

javascript - 带动画的线连接不适用于 ECG

jquery - 如何在数据表的响应状态下检测最后一个可见列

javascript - 当日期选择器和相邻元素之间没有空格时,Angular-Datepicker 不起作用?

javascript - 如何根据 AngularJS 中另一个选择中的选择索引更改选择标签的内容?

javascript - 谷歌图表工具提示中的 DIV 定位

javascript - 更新数组项

javascript - 如何将事件类添加到 onclick 元素?

Jquery验证方法字母、数字和特殊字符

javascript - 在哪里可以找到 Angular.js 抛出的异常的描述?