在javascript中将字符串与regexp匹配

在javascript中将字符串与regexp匹配,javascript,regex,string,Javascript,Regex,String,我在JS中将字符串与regexp匹配时遇到问题。 我可以用这个: /"[^"]*?"/g 在此字符串中: " this is a string " 但我不能用这个: " this is a \"string\" " 我怎样才能解决这个问题? 谢谢。在这种情况下,您不应该使用[^”]*也不需要任何字符,您可以使用以下正则表达式来匹配2个引号之间的所有字符: /"(.*)"/g 如果要匹配“之间的任何内容,只需在具有全局修饰符的字符类中使用带空格匹配器的单词字符匹配器: /[\w\s]+/

我在JS中将字符串与regexp匹配时遇到问题。 我可以用这个:

/"[^"]*?"/g
在此字符串中:

" this is a string "
但我不能用这个:

" this is a \"string\" "
我怎样才能解决这个问题?
谢谢。

在这种情况下,您不应该使用
[^”]*
也不需要任何字符,您可以使用以下正则表达式来匹配2个引号之间的所有字符:

/"(.*)"/g

如果要匹配
之间的任何内容,只需在具有全局修饰符的字符类中使用带空格匹配器的单词字符匹配器:

/[\w\s]+/g

作为另一种方式,您可以使用:

/(?
您可以尝试类似的方法。您需要抓取组或捕获,但不匹配。请参阅演示

见演示


如果我理解正确,您要做的是测试字符串的格式是否正确?这样就不会出现过早的字符串结尾了吗


如果是这种情况,您可以使用
/”(?:[^“\\]\\\)*”/g

如果您告诉我们应该具体匹配什么,可能会更容易些。请提供有关您的问题的更多信息。您在这个字符串中使用此…到底是什么意思“?预期结果是什么?你问题中的引号是字符串的一部分吗?也就是说,当你写
“这是一个字符串”
,你是表达一个18个字符还是20个字符的字符串?你是否使用文字符号(其中
/
开始一个转义序列)或者字符串中存在的字符值的实际字符(其中,
/
只是一个
/
字符)?我想匹配字符串中的字符串。我的意思是我想用正则表达式匹配这些字符串。我想查找介于“和”之间的任何内容,但不查找\。是否也要像
一样匹配空字符串“
?这可能更接近他所需要的,但我认为他没有意识到。更快的方法是
”[^“\\]*(?:\\.[^”\]*)*“
@sln那么为什么在
”(.*)时使用如此复杂的正则表达式呢?”
也可以这样做吗?@Kasra-这并不复杂,它是标准的展开循环方法。它比交替方法快3-5倍。谢谢。最后,它工作得更好:
“(?:[^”\]\\\\)*”(?:[^'\]\\\\\)*”
现在用
“a\\”b测试这个解决方案“
@moisrex在任何情况下都失败了吗?@moisrex的负look-behind并将匹配
后未按模式处理的字符串?阅读更不幸的是,look-behind在JavaScript中不支持。但感谢您提到这一点。我今天学到了很多。使用
(?@Casimirithippolyte所以在你所说的这个案例中可能有很多场景。这只是这个案例的一个配方!
/(?<!\\)"(.*?)(?<!\\)"/
[^\\]?(".*?[^\\]")
(?:[^\\]|^)(".*?[^\\]")