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

这应该做。顺便说一句,你的正则表达式是错误的......(你忘了逃避[and]

<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 回答