0

メソッドを使用して特定のパターンを一致させようとして.match()いますが、少し混乱しています。私はこのような文字列を持っています。

SomeError on example.com/register/
[u'Some Error Message Here, That we want to parse'].

Some more text here
Some more text here

Some Error Message Here, That we want to parse上記の文字列からテキストを解析しようとしています。regex私が使用している電流は:

response.match(/.*[u'(.*).*']/)

それは私に与えます:

[u'Some Error Message Here, That we want to parse.'

[u'しかし、結果が次のようになるように、削除して分割したいと思い'ます。

Some Error Message Here, That we want to parse

私が間違っていることを教えてください。ありがとう

4

4 に答える 4

2

[ ]中かっこをエスケープする必要があるという事実を除いて、実際には正規表現は正しいです。

このmatch関数は一致の配列を提供します。正しいものを取得する必要があります。

var str="SomeError on example.com/register/\n[u'Some Error Message Here, That we want to parse'].\n\nSome more text here\nSome more text here";

var n = str.match(/.*\[u'(.*).*'\]/);

​alert(n[1]);​ // Prints "Some Error Message Here, That we want to parse"
于 2012-12-18T08:43:50.200 に答える
1

[角かっこ(および)をエスケープすることを忘れないでください]

response.match(/.*\[u'(.*).*'\]/)
于 2012-12-18T08:39:38.947 に答える
1

まず、角かっこをエスケープする必要があります。

match一致の配列を返すため、丸括弧で囲まれた値は、この配列のインデックス1になります。

response.match(/.*\[u'(.*)'\]/)[1]

またはあなたは試すことができます

/.*\[u'(.*)'\]/.exec(response)[1]
于 2012-12-18T08:43:53.070 に答える
1

このshoudlはそれをします。あなたの正規表現は間違っています...(あなたは逃げるのを忘れ[]

<html>
    <body>

        <script type="text/javascript">
            var response= "[u'Some Error Message Here, That we want to parse'].";

            if(response.match(/^.*\[u'.*'\].*$/)){
                var message = response.replace(/^.*\[u'/, '');
                var message = message.replace(/\'].*$/, '');
                document.write(message);
            } 
            </script>
    </body>
</html>
于 2012-12-18T08:47:38.700 に答える