我对正则表达式有点麻烦。
我想在句子中匹配正则表达式。
示例:
John has two candy ::123::
我正在使用此代码来查找它:
var getid = x$('div').html().match(/::([^:]+)::/g);
要获得123句话。
那么我的问题是什么? 我一直在为getid var。
获取一个未定义的值答案 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)
重新编写的示例: