Jquery:使用string.match时出现“G is undefined”错误

时间:2010-07-08 17:39:46

标签: jquery regex

我正在使用Jquery 1.3,这是我隔离了在firebug中抛出错误的代码的代码,如下所示:“G未定义”

    var product = $("#id :selected");         // This is a dropdown
    var prodTxt = product.text();             // Returns string as expected
    var price = prodTxt.match(/\$[0-9]{3}/);  // Commenting this out removes the error. 
    //var price = prodTxt.match(/\$[0-9]*/); 

我认为它与正则表达式中的* /有关,但仍然不起作用。

正则表达式查找美元符号所示的任何价格。

我想还有其他解决办法,我可能会这样做,但我仍然对我做错了什么感到困惑。谢谢你的帮助。

UPDATE-解决

var price = String(prodTxt.match(/\$[0-9]{3}/));

不确定为什么会有效。我敢肯定比我更聪明的人可以解释如何不强调它会激怒不祥的“g”变量。

2 个答案:

答案 0 :(得分:2)

我没有得到那个错误。请注意.match()返回一个数组,因此您可能需要通过索引[0]访问匹配项。

试一试: http://jsfiddle.net/dJ294/

$("#id").change(function() {
    var product = $("#id :selected");         // This is a dropdown
    var prodTxt = product.text();             // Returns string as expected
    var price = prodTxt.match(/\$[0-9]{3}/);  // Commenting this out removes the error. 
    //var price = prodTxt.match(/\$[0-9]*/);

         // Access match by its index number
    $('body').append('<br/>' + price[0]);
});​

答案 1 :(得分:0)

问题出现在匹配线之后。最有可能的是,当匹配返回数组时,当您尝试将“price”变量用作字符串时,会导致此问题。