2012-03-28 20 views
0

を置き換えるためにそれを使用するためにJavaScriptで正規表現に苦しんで、私は、フォームは、文字列の一致する部分を取り、別の部分

<a href="javascript://">by unknownstring</a> 
のHTMLの束の途中で表現(実際にはRSSフィードを)持っています

unknownstringには、ダッシュを含む英数字を含む任意の文字列を使用できますが、スペースやスラッシュは含まれません。効果的に、それはディレクトリ名です。 私はそれを変更できるようにする必要があります:私は正規表現については、最大読んでいるが、そのほとんどが私の頭の上に起こっているの

<a href="http://zazzle.com/unknownstring*">by unknownstring</a> 

。残念ながら私はここや他の場所で読んだことの大部分を理解するのに十分理解していません。

感謝ヘルプ:)

答えて

1

は、この方法を試してください。

str = '<a href="javascript://">by unknownstring</a>' 
regex = /\<a href="javascript:\/\/"\>by (\w+)\<\/a\>/ 
replacement = '<a href="http://zazzle.com/$1*">by $1</a>' 

console.log(str.replace(regex, replacement)); 
// <a href="http://zazzle.com/unknownstring*">by unknownstring</a> 

は、ここで私が使用しsome materialです。このような:)

0

正規表現は:

var str = '<a href="javascript://">by unknownstring</a>'; 
var regx = '<a href="javascript://">by (.*)</a>'; 
var output = '<a href="http://zazzle.com/$1">by $1</a>'; 
str.replace(RegExp(regx),output); 

お楽しみください!

1

あなたが別のために1つの試合ピースを代用異なる試合片を使用して、あなたはこのようにそれを行うことができます。http://jsfiddle.net/jfriend00/KgN7t/:あなたがここにこの1つの作業を見ることができます

var html = '<a href="javascript://">by unknownstring</a>'; 
html = html.replace(/(<a\s+.*?href=['"])(javascript:\/\/)(.*?>by\s+)(.*?)(<\/a>)/g, "$1$4$3$4$5"); 
alert(html); 

。概念的には、正規表現を書いてマッチストリングのすべての部分をマッチさせてから、一片を別の部分に置き換えて全体を置き換えます。正規表現の各部分は括弧で区切られています。

それとも、同様の概念を使用していますが、カスタムで、このように機能を置き換えることができます。

var html = '<a href="javascript://">by unknownstring</a>'; 
html = html.replace(/<a\s+.*?href=['"](javascript:\/\/).*?>by\s+(.*?)<\/a>/g, function(str, p1, p2) { 
    return(str.replace(p1, p2)); 
}); 

あなたは、それはここで働いて見ることができます:

+0

http://jsfiddle.net/jfriend00/ewnqj/はあなたにみんなありがとう - それは私を途方もなく助けたと答えています私の質問: –

+0

説明に良い仕事:) –

関連する問題