javascript - 涉及转义符号的正则表达式

时间:2016-05-11 09:44:48

标签: javascript regex string

我有一个问题。

如果我尝试:

var stringTest = "stuff stuffthatIwant more stuff";
var stringRegex = stringTest.match("stuff (.*?) more");

stringRegex [1]返回:" stuffthatIwant"。

但如果我将代码更改为:

var stringTest = "stuff stuffthatIwant ? some stuff";
var stringRegex = stringTest.match("stuff (.*?) \?");

stringRegex [1]返回:" stuffthatIwant?一些东西"。

我该怎么做才能使用"?"就像我使用"更多"在第一个例子?

1 个答案:

答案 0 :(得分:0)

将正则表达式文字传递给String.match()方法:

/stuff (.*?) \?/

请参阅regex demo

将字符串传递给match方法时,它用于使用RegExp构造函数构建正则表达式对象,然后所有反斜杠应加倍。请参阅String.match() MDN reference

  

如果传递了非RegExp对象obj,则使用RegExp将其隐式转换为new RegExp(obj)



document.body.innerHTML = "stuff stuffthatIwant ? some stuff".match(/stuff (.*?) \?/)[1];