.match特定模式

时间:2012-12-18 08:29:35

标签: javascript regex match

我试图使用.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 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

不要忘记转义括号([]):

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

答案 2 :(得分:1)

首先,你需要转义方括号。

match返回一个匹配数组,因此,括在圆括号中的值将位于此数组的索引1处。

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

或者你可以尝试

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

答案 3 :(得分:1)

这应该这样做。你的正则表达式是错误的...(你忘了逃避[]

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