包含转义符号的正则表达式

regex involving escaped symbols

本文关键字:正则表达式 符号 转义 包含      更新时间:2023-09-26

我有个问题。

如果我尝试:

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?somethings"。

我应该如何使用"?",就像我在第一个例子中使用"更多"一样?

将regex文本传递给String.match()方法:

/stuff (.*?) '?/

查看regex演示

当您将字符串传递给match方法时,它用于使用RegExp构造函数构建regex对象,然后所有反斜杠都应该加倍。参见String.match() MDN参考:

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

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