Javascript 替换正则表达式无法按预期工作?

标签 javascript

我有以下例程来替换名为“SalesWeek”的下拉列表的选项中显示的日期时间字符串的时间部分。 Replace 方法不会替换正则表达式预期匹配的字符串部分。

当以下例程在浏览器(FF)中运行时:

var select = $('#SalesWeek');
var item = '';

$.each($('#SalesWeek option'), function(){
    item = $(this).text();
    console.log('before: ' + item);
    var regex = new RegExp(/(\s([0]\d|[1][0-2])(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})/);
    item.replace(regex,'');
    console.log('after: ' + item);
    $(this).html(item);
});

以下内容将打印到控制台:

before: 12/31/2011 12:00:00 AM
after: 12/31/2011 12:00:00 AM

但我期待:

before: 12/31/2011 12:00:00 AM
after: 12/31/2011

我尝试使用 $(this).html() 和 $(this).text() 来获取初始值,认为在任何一种情况下,也许在控制台中都没有看到一些字符......但似乎没有什么区别。

我已经在以下链接中测试了在 javascript 中使用的正则表达式: http://www.regxlib.com/RETester.aspx

使用 JavaScript 引擎

Test Expression: (\s([0]\d|[1][0-2])(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})
Input Value: 12/3/2011 12:00:00 AM
Expected Match: 12:00:00 AM

它似乎可以正常工作。请注意,我在测试时删除了表达式上的前导“/”和尾随“/”,但我相信在 javascript 中创建新的 RegExp 时“/”是必要的。也许我错了,还有另一种方法,但是如果我尝试创建的表达式没有以这种方式包含,我似乎会在 firebug 中收到错误。

我似乎总是能在 Stack Overflow 上找到我遇到的大多数问题的答案...但我不知所措...所以,我很谦虚地成为提出这个问题的人时间...非常感谢任何帮助...

最佳答案

您没有分配结果。

item = item.replace(regex,'');

关于Javascript 替换正则表达式无法按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761462/

相关文章:

javascript - Angular 4 设置 ng-valid 来处理无效的电子邮件输入

javascript - 如何在 HTML、JS、CSS 中创建动画绳索

javascript - 如何在 Angular 中使用 Controller 定位 html 元素?

javascript - 如何枚举 JavaScript 对象的属性?

javascript - 数据表客户端数据更改/重绘

javascript - 如何将 JSON 字符串转换为 JavaScript 对象文字

javascript - 如何获取客户端的区域设置来识别客户端的小数分隔符?

javascript - 全局变量仅返回循环中最后一个实例的值

javascript - 如何删除特定按钮?

javascript - 如何在Windows上运行TypeScript程序?