2011-03-02 53 views
1

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

现在即时我试图用另一个字符串替换字符串,但我似乎不能成功。

即时得到来自用户的输入:

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) 

,我可以替换字符串caseinsensetive这个样子,怎么样我可以在js里做这个吗?

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

希望我能得到一些帮助,提前致谢! :)

最好的问候, 亚历山大

回答

3

有两个问题与此线路上使用的replace

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

试试这个:

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

正则表达式中的/ g是多少? – Alexander

+0

/g代表全局,意思是在干草堆中替换所有针的实例,而不是仅替换您找到的第一个实例。 – rncrtr

1

试试这个:

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

这应该很好地工作:

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

希望这有助于! :)