使用.match获取特定单词并使用正则表达式

时间:2012-03-25 13:08:34

标签: jquery

我对正则表达式有点麻烦。

我想在句子中匹配正则表达式。

示例:

John has two candy ::123::

我正在使用此代码来查找它:

var getid = x$('div').html().match(/::([^:]+)::/g);

要获得123句话。

那么我的问题是什么? 我一直在为getid var。

获取一个未定义的值

1 个答案:

答案 0 :(得分:0)

问题是g标志。您不能将其与String#match一起使用。删除它,它工作正常(live copy | source):

var getid = x$('div').html().match(/::([^:]+)::/);
if (getid) {
    display("Found: " + getid[1]);
}
else {
    display("Not found");
}

如果要查找文本中的所有匹配项,请使用RegExp#exec和循环(以及g标记)(live copy | source):< / p>

var rex = /::([^:]+)::/g;
var str = x$('div').html();
var getid;
while (getid = rex.exec(str)) {
    display("Found: " + getid[1]);
}

(为了更清晰,您可以使用

while ((getid = rex.exec(str)) != null) {

...因为测试中的作业看起来像=而不是==错字;但它除了可读性之外还有其他相同之处。)


在下面询问有关x$(this)的评论,它应该有所不同。以上是使用x$(this)重新编写的示例: