我试图使用.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
请让我知道我做错了什么。感谢
答案 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>