-3

我正在尝试制作一个获取单词第一个字符的脚本,但排除了某些单词。因此要过滤这些单词,请使用正则表达式并将它们替换为空。这是我的代码:

$(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 & Country Club demo”,则输出必须是“demo”中的“D”。这是 de jsfiddle 示例:http: //jsfiddle.net/qCUrH/

4

3 回答 3

2

问题是 . 后面有一个不必要的分号val()。您的代码正在抛出“Uncaught SyntaxError: Unexpected token .”。

改变:

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

至:

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

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

改变:

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

至:

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

JSFiddle 示例

于 2013-06-10T08:28:04.013 回答
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);
});
于 2013-06-10T08:30:39.543 回答
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();

此外,您还必须在 regex 中删除"正则表达式周围的包围,replace()
此外,您还缺少正则表达式中的全局标志/reged/ig

演示:小提琴

于 2013-06-10T08:27:49.813 回答