【发布时间】:2017-05-01 06:45:25
【问题描述】:
我有像这样匹配字符串文字的正则表达式:
/"[^"\\]*(?:\\[\S\s][^"\\]*)*"|'[^'\\]*(?:\\[\S\s][^'\\]*)*'/
如何测试给定的字符串是否包含无效(未闭合的字符串),如下所示:
echo "asd \\\"asd && rm
应该匹配:
echo "fooecho "asd \\\"asd && rmecho "asd \" " asd && rm " \"
但不是:
echo "asd \\\"asd" && rmecho "asd \"asd" && rmecho "asd \\\\\"asd" && echo " \" " && rm
如何使用 javascript(没有特定的 PCRE 扩展)创建这样的正则表达式解决方案是首选。
编辑:我已经使用 php 解决了这个问题:
/(?:"[^"\\]*(?:\\[\S\s][^"\\]*)*"|'[^'\\]*(?:\\[\S\s][^'\\]*)*')(*SKIP)(*F)|"/
是否可以在 javascript 中做同样的事情,还是我需要解析字符串?
【问题讨论】:
-
@Alex 那应该解决什么问题?问题是匹配字符串中的数字,问题是访问属性。
-
在您的问题中,您问如何创建“使用 javascript 的此类正则表达式解决方案”。我提供的链接显示了如何使用 JavaScript 来执行正则表达式。您也没有提到匹配的数字或访问您的问题中的属性。您能否提供显示您需要访问哪些属性的代码?这样我们才能找出访问它们的最佳方式。
-
@Alex 不是我的问题,但您链接的问题是关于使用属性和正则表达式来匹配数字。我的问题是如何创建匹配字符串文字的正则表达式。
-
@Alex 问题是关于检查字符串是否包含奇数个引号字符,如果引号之前没有斜杠甚至斜杠数。
标签: javascript php regex string