【问题标题】:javascript jquery regexp replacejavascript jquery 正则表达式替换
【发布时间】:2011-03-02 20:08:58
【问题描述】:

我正在尝试创建一个动态搜索栏,我需要帮助。

现在我试图用另一个字符串替换一个字符串,但我似乎无法成功。

我正在从用户那里获得输入:

var location_keyword = $("#si_user_location").val();

现在我想用“|”替换空格“”在我的正则表达式中使用它作为 OR。

例如,如果用户写了“土耳其阿拉尼亚”,我希望它是“土耳其|阿拉尼亚”,以便搜索土耳其或阿拉尼亚。

我尝试了类似的方法,但没有成功

var location_keyword = $("#si_user_location").val();
location_keyword.replace(" ","|");
var regexp_loc = new RegExp(location_keyword, "i");

我以前在 PHP 中使用以下表达式来执行此操作:

preg_replace('/'.preg_quote($keyword).'/i', "<span>$0</span>", $string)

我可以像这样替换字符串不区分大小写,我如何在 js 中做到这一点?

我使用 PHP 中的最后一个表达式来突出显示结果中的关键字,我想在 js 中也这样做。

希望我能得到一些帮助,在此先感谢! :)

最好的问候, 亚历山大

【问题讨论】:

    标签: javascript jquery regex replace


    【解决方案1】:

    在这行使用replace有两个问题:

    location_keyword.replace(" ","|");
    
    • 它不修改字符串 - 它返回一个新字符串。您需要将调用结果重新分配给原始变量,否则您将看不到更改后的字符串。
    • 它只替换第一次出现,除非您使用带有g(全局)标志的正则表达式。

    试试这个:

    location_keyword = location_keyword.replace(/ /g, '|');
    

    【讨论】:

    • 正则表达式中的 /g 是什么?
    • /g 代表全局,意思是替换大海捞针的所有实例,而不是只替换你找到的第一个实例。
    【解决方案2】:

    试试这个:

    location_keyword = location_keyword.replace(/\s+/,"|");

    【讨论】:

      【解决方案3】:

      这应该可以正常工作:

      location_keyword.replace(/ /g,"|");
      

      希望这会有所帮助! :)

      【讨论】:

        猜你喜欢
        • 2010-11-12
        • 2016-09-23
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多