小编djs*_*djs的帖子

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

我有以下例程来替换名为"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);
});
Run Code Online (Sandbox Code Playgroud)

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

before: 12/31/2011 12:00:00 AM
after: 12/31/2011 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)

但我期待:

before: 12/31/2011 12:00:00 AM
after: 12/31/2011
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用$(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
Run Code Online (Sandbox Code Playgroud)

它似乎没有问题.请注意,我在测试时剥离了表达式的前导"/"和尾随"/",但我相信在javascript中创建新的RegExp时需要"/".也许我对此错了,还有另一种方法,但是如果我试图创建的表达式不是那样封闭的话,我似乎在firebug中出错了.

我似乎总是在Stack Overflow上找到我遇到的大多数问题的答案......但是我很茫然......所以,我很谦卑地成为这次提问的人... .很感谢任何形式的帮助...

javascript

2
推荐指数
1
解决办法
1239
查看次数

标签 统计

javascript ×1