我想匹配字符串6c81748b9239e96e
它每次都是随机的。使用下面的代码。我的问题是,它匹配整个字符串,我只需要包含字母和数字的随机字符串。用正则表达式和javascript查找字符串
字符串
<a href="playgame.aspx?gid=4&tag=6c81748b9239e96e">Play</a>
JavaScript的正则表达式
string.match(/\&tag\=[A-Za-z0-9]+\"\>/i);
我想匹配字符串6c81748b9239e96e
它每次都是随机的。使用下面的代码。我的问题是,它匹配整个字符串,我只需要包含字母和数字的随机字符串。用正则表达式和javascript查找字符串
字符串
<a href="playgame.aspx?gid=4&tag=6c81748b9239e96e">Play</a>
JavaScript的正则表达式
string.match(/\&tag\=[A-Za-z0-9]+\"\>/i);
这里是我的建议:
加入由@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, " "));
}
使用方法:
var str = getParameterByName('tag', string);
的jsfiddle演示:http://jsfiddle.net/Ralt/u9MAv/
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);
}
你的正则表达式
&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 «"»
除了字母和数字,你还有什么字符串? –
@Hauns TM我不明白你在问什么?我添加了整个字符串 –
只需将[A-Za-z0-9] +包装在圆括号内 - ([A-Za-z0-9] +) – DmitryK