我有以下例程来替换名为“SalesWeek”的下拉列表选项中显示的日期时间字符串的Time部分。 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上找到我遇到的大多数问题的答案......但是我很茫然...所以,我很谦卑地成为那个问这个问题的人时间...非常感谢任何帮助...
答案 0 :(得分:7)
您没有分配结果。
item = item.replace(regex,'');