Javascript替换不起作用

时间:2013-06-10 08:26:30

标签: javascript jquery regex

我正在尝试创建一个脚本来获取单词的第一个字符,但有些单词被排除在外。所以要过滤这些单词,请使用正则表达式并将其替换为空。 在这里我的代码:

$(document).on("keyup","input[name=name]",function(){
    var val = $(this).val().replace("/((golfpark|golfcourse|course|golfclub|golfbaan|golf|en|&|country|club|gc)|[\s]([^\s]{0,3})[\s]|[\s])/i","").substring(0,1).toUpperCase();
    $("select[name=char_link]").val(val);
});

例如,如果我输入'Golfbaan&乡村俱乐部演示'在输入字段中,outpus必须是'demo'中的'D'。 这是de jsfiddle的例子: http://jsfiddle.net/qCUrH/

3 个答案:

答案 0 :(得分:2)

问题是val()之后你有一个不必要的分号。您的代码正在抛出" Uncaught SyntaxError:意外的令牌。 "

变化:

$(this).val();.replace(...);

要:

$(this).val().replace(...);

此外,为了使正则表达式起作用,您需要删除引号。

变化:

.replace("/MyPattern/i", ...);

要:

.replace(/MyPattern/i, ...);

JSFiddle example

答案 1 :(得分:1)

尝试

var val = $(this).val().replace(/((golfpark|golfcourse|course|golfclub|golfbaan|golf|en|&|country|club|gc)|[\s]([^\s]{0,3})[\s]|[\s])/ig,"").substring(0,1).toUpperCase();
;

之后

没有$(this).val();

此外,您必须删除"中正则表达式周围的封闭replace() 您还缺少正则表达式/reged/ig

中的全局标记

演示:Fiddle

答案 2 :(得分:1)

您将传递一个字符串作为要替换的第一个参数。如果删除正则表达式周围的“引号”,则会将其视为正则表达式。

$(document).on("keyup","input[name=name]",function(){
    var val = $(this).val().replace(/((golfpark|golfcourse|course|golfclub|golfbaan|golf|en|&|country|club|gc)|[\s]([^\s]{0,3})[\s]|[\s])/i,"").substring(0,1).toUpperCase();
    $("select[name=char_link]").val(val);
});