0

6c81748b9239e96e毎回ランダムな文字列を一致させようとしています。以下のコードを使用します。私の問題は、文字列全体と一致し、文字と数字を含むランダムな文字列のみが必要なことです。

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

JavaScript 正規表現

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

4 に答える 4

1

正規表現グループを使用して照合し、後で目的のパターンにアクセスできます。使用する必要のある正規表現は次のようになります/\&tag\=([A-Za-z0-9]+)\"\>/i。丸括弧((および))は、キャプチャするグループを示します。次に、ここに示すようにキャプチャグループにアクセスできます。

編集:詳しく調べてみると、間違った正規表現を使用している可能性があります。私はJavascriptの正規表現にあまり慣れていませんが、必須ではないandとandをエスケープしている&よう=です>。代わりにこれを試してください:/&tag=([A-Za-z0-9]+)\">/i

于 2012-06-06T10:21:29.143 に答える
1

これが私の提案です:

  1. @Artem Bargerによって提供されたスニペットをコードに追加します:httpsstr ://stackoverflow.com/a/901144/851498ただし、(引数を追加して)少し変更する必要があります。

    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/

于 2012-06-06T10:21:36.857 に答える
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);
}
于 2012-06-06T10:25:04.373 に答える
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 “&amp;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 «"»
于 2012-06-06T10:29:55.290 に答える