2012-03-25 4 views
0

正規表現に少し問題があります。.matchを使用して特定の単語を取得し、正規表現が機能しない

文中の正規表現に一致させたいと思います。

例:

John has two candy ::123:: 

と私はそれを探すために、このコードを使用しています:

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

文の123私たちを取得するには。

ここで私の問題は何ですか? 私はgetid varに未定義の値を取得し続けました。

+0

yeah x $はエイリアスです。それは未定義の値を得ています。 – sm21guy

+0

ページにdivだけがありますか? idで要素にアクセスするとよいでしょう。 –

+0

私は(this).html()を使用しています。その上にそのdiv IDがあるからです。クリック機能で。 – sm21guy

答えて

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):

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

(より明確にするために、あなたはTEの代入を持つので、...

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

を使用する場合がありますstは==の代わりに=のように見えます。それは読みやすさ以外同じことになる。)についてx$(this)を求め、以下のコメントを再


しかし、それはすべての違いを作る必要があります。

  • 1試合:ここでは上記の例はx$(this)使用することを再加工されているExampleを| source
  • ループ:Example | source
+0

こんにちは、gフラグを削除してもまだ未定義の値を取得しています。私は$(これ)を使用しています、それは大丈夫ですか、それは.matchに影響しますか? – sm21guy

+0

@ sm21guy:要素を取得する 'x $(this)'は問題ありません(問題の 'this'がテキストを持つ要素である場合)、コードには別の問題があるはずです。上の作業例でそれを見つけてください。あなたはそれを見つけることができるはずです。私は 'x $(this)'を使ってサンプルを追加しました。 –

+0

ありがとう私は他の問題を探しています。 – sm21guy

関連する問題