2012-06-06 110 views
0

我想匹配字符串6c81748b9239e96e它每次都是随机的。使用下面的代码。我的问题是,它匹配整个字符串,我只需要包含字母和数字的随机字符串。用正则表达式和javascript查找字符串

字符串

<a href="playgame.aspx?gid=4&tag=6c81748b9239e96e">Play</a> 

JavaScript的正则表达式

string.match(/\&tag\=[A-Za-z0-9]+\"\>/i); 
+0

除了字母和数字,你还有什么字符串? –

+0

@Hauns TM我不明白你在问什么?我添加了整个字符串 –

+0

只需将[A-Za-z0-9] +包装在圆括号内 - ([A-Za-z0-9] +) – DmitryK

回答

1

这里是我的建议:

  1. 加入由@Artem巴格提供给你的代码片段:https://stackoverflow.com/a/901144/851498你需要稍微修改它,但(加入str参数):

    function getParameterByName(name, str) 
    { 
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
        var regexS = "[\\?&]" + name + "=([^&#]*)"; 
        var regex = new RegExp(regexS); 
        var results = regex.exec(str); 
        if(results == null) 
         return ""; 
        else 
         return decodeURIComponent(results[1].replace(/\+/g, " ")); 
    } 
    
  2. 使用方法:

    var str = getParameterByName('tag', string); 
    

的jsfiddle演示:http://jsfiddle.net/Ralt/u9MAv/

1

你可以使用正则表达式组来搭配,后来访问你后的图案。您需要使用的正则表达式如下所示:/\&tag\=([A-Za-z0-9]+)\"\>/i。圆括号(())将表示您要捕获的组。然后您可以访问捕获组,如here所示。

编辑:仔细检查,似乎你可能会使用不正确的正则表达式。我并不是真正习惯Javascript正则表达式,但它似乎是逃避&=>,这不是必需的。试试这个:/&tag=([A-Za-z0-9]+)\">/i

+0

我也为此得到null。 –

+0

@ Mr.1.0:我认为你正在使用一个错误的正则表达式。我已经测试了一种似乎可行的新产品。请检查我的更新回复。 – npinti

0
var myregexp = /(&tag=)([A-Za-z0-9]+)\b/img; 
var match = myregexp.exec(subject); 
while (match != null) { 
    for (var i = 0; i < match.length; i++) { 
     // matched text: match[i] 
    } 
    match = myregexp.exec(subject); 
} 
0

你的正则表达式

&tag=([A-Za-z\d]+)" 

它简化了(你逃脱太多)和括号加把你想要的东西在第1组

在javascript中这变成

var myregexp = /&tag=([A-Za-z\d]+)"/; 
var match = myregexp.exec(subject); 
if (match != null) { 
    result = match[1]; 
} else { 
    result = ""; 
} 

说明

Match the characters “&tag=” literally «&tag=» 
Match the regular expression below and capture its match into backreference number 1 «([A-Za-z\d]+)» 
    Match a single character present in the list below «[A-Za-z\d]+» 
     Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» 
     A character in the range between “A” and “Z” «A-Z» 
     A character in the range between “a” and “z” «a-z» 
     A single digit 0..9 «\d» 
Match the character “"” literally «"» 
相关问题